From d493a63bc8f6d01be6fd23a30aa36e63013ab787 Mon Sep 17 00:00:00 2001 From: vczh Date: Fri, 7 Jun 2024 00:14:28 -0700 Subject: [PATCH] Update release --- Import/GacUI.UnitTest.UI.cpp | 1660 +++++++++++++++++ Import/GacUI.UnitTest.UI.h | 536 ++++++ Import/GacUI.UnitTest.UIReflection.cpp | 197 ++ Import/GacUI.UnitTest.UIReflection.h | 137 ++ Import/GacUI.UnitTest.cpp | 285 +++ Import/GacUI.UnitTest.h | 1444 ++++++++++++++ Import/GacUI.Windows.cpp | 72 +- Import/GacUI.Windows.h | 6 +- Import/GacUI.cpp | 1482 ++++++++++++--- Import/GacUI.h | 1575 ++++++++++++---- Import/GacUICompiler.cpp | 1099 ++++++++--- Import/GacUICompiler.h | 253 ++- Import/GacUIReflection.cpp | 47 +- Import/GacUIReflection.h | 2 +- Import/Skins/DarkSkin/DarkSkin.cpp | 82 +- Import/VlppGlrParser.cpp | 257 ++- Import/VlppGlrParser.h | 19 +- Import/VlppGlrParserCompiler.cpp | 226 +-- Import/VlppOS.cpp | 7 +- Import/VlppWorkflowCompiler.cpp | 774 ++++---- Import/vlpp.natvis | 85 +- Tools/Executables/GacGen/Main.cpp | 5 +- Tools/Reflection32.bin | Bin 948890 -> 949672 bytes Tools/Reflection64.bin | Bin 948890 -> 949672 bytes .../Source/DemoPartialClasses.cpp | 148 ++ .../UI/Source/DemoPartialClasses.cpp | 8 + .../UI/Source/DemoPartialClasses.cpp | 18 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../DataGrid/UI/Source/DemoPartialClasses.cpp | 11 + .../Dialogs/UI/Source/DemoPartialClasses.cpp | 30 + .../UI/Source/EditorBasePartialClasses.cpp | 41 + .../UI/Source/EditorRibbonPartialClasses.cpp | 7 + .../Source/EditorToolstripPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 8 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 30 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 10 + .../UI/Source/HelloWorldPartialClasses.cpp | 4 + Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 | Bin 25176 -> 25176 bytes Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 | Bin 25176 -> 25176 bytes .../Flow/UI/Source/DemoPartialClasses.cpp | 5 + .../UI/Source/DemoPartialClasses.cpp | 4 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 4 + .../Stack/UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 1 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 3 + .../UI/Source/DemoPartialClasses.cpp | 2 + .../UI/Source/DemoPartialClasses.cpp | 2 + 65 files changed, 8960 insertions(+), 1664 deletions(-) create mode 100644 Import/GacUI.UnitTest.UI.cpp create mode 100644 Import/GacUI.UnitTest.UI.h create mode 100644 Import/GacUI.UnitTest.UIReflection.cpp create mode 100644 Import/GacUI.UnitTest.UIReflection.h create mode 100644 Import/GacUI.UnitTest.cpp create mode 100644 Import/GacUI.UnitTest.h diff --git a/Import/GacUI.UnitTest.UI.cpp b/Import/GacUI.UnitTest.UI.cpp new file mode 100644 index 00000000..a8dc70da --- /dev/null +++ b/Import/GacUI.UnitTest.UI.cpp @@ -0,0 +1,1660 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.UnitTest.UI.h" +#ifndef VCZH_DEBUG_NO_REFLECTION +#include "GacUI.UnitTest.UIReflection.h" +#endif + +/*********************************************************************** +.\APPLICATION\GUIUNITTESTSNAPSHOTVIEWERAPP.CPP +***********************************************************************/ + +namespace gaclib_controls +{ + using namespace vl; + using namespace vl::collections; + using namespace vl::filesystem; + using namespace vl::presentation; + using namespace vl::presentation::elements; + using namespace vl::presentation::compositions; + using namespace vl::presentation::controls; + using namespace vl::presentation::unittest; + using namespace gaclib_controls; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + Alignment GetAlignment(remoteprotocol::ElementHorizontalAlignment alignment) + { + switch (alignment) + { + case remoteprotocol::ElementHorizontalAlignment::Left: return Alignment::Left; + case remoteprotocol::ElementHorizontalAlignment::Right: return Alignment::Right; + default: return Alignment::Center; + } + } + + Alignment GetAlignment(remoteprotocol::ElementVerticalAlignment alignment) + { + switch (alignment) + { + case remoteprotocol::ElementVerticalAlignment::Top: return Alignment::Top; + case remoteprotocol::ElementVerticalAlignment::Bottom: return Alignment::Bottom; + default: return Alignment::Center; + } + } + + void InstallDom( + const remoteprotocol::RenderingTrace& trace, + const remoteprotocol::RenderingFrame& frame, + GuiGraphicsComposition* container, + vint x, + vint y, + Ptr dom, + vint& cursorCounter) + { + auto bounds = new GuiBoundsComposition; + container->AddChild(bounds); + + bounds->SetExpectedBounds(Rect({ dom->bounds.x1 - x,dom->bounds.y1 - y }, { dom->bounds.Width(),dom->bounds.Height() })); + + auto cursor = dom->cursor; + if (dom->cursor) + { + cursorCounter++; + } + + if (dom->hitTestResult && cursorCounter == 0) + { + switch (dom->hitTestResult.Value()) + { + case INativeWindowListener::BorderLeft: + case INativeWindowListener::BorderRight: + cursor = INativeCursor::SizeWE; + break; + case INativeWindowListener::BorderTop: + case INativeWindowListener::BorderBottom: + cursor = INativeCursor::SizeNS; + break; + case INativeWindowListener::BorderLeftTop: + case INativeWindowListener::BorderRightBottom: + cursor = INativeCursor::SizeNWSE; + break; + case INativeWindowListener::BorderRightTop: + case INativeWindowListener::BorderLeftBottom: + cursor = INativeCursor::SizeNESW; + break; + case INativeWindowListener::Icon: + case INativeWindowListener::ButtonMinimum: + case INativeWindowListener::ButtonMaximum: + case INativeWindowListener::ButtonClose: + cursor = INativeCursor::Hand; + break; + case INativeWindowListener::Title: + cursor = INativeCursor::SizeAll; + break; + } + } + + if (cursor) + { + bounds->SetAssociatedCursor(GetCurrentController()->ResourceService()->GetSystemCursor(cursor.Value())); + } + + if (dom->element) + { + switch (trace.createdElements->Get(dom->element.Value())) + { + case remoteprotocol::RendererType::FocusRectangle: + { + auto element = Ptr(GuiFocusRectangleElement::Create()); + bounds->SetOwnedElement(element); + } + break; + case remoteprotocol::RendererType::SolidBorder: + { + auto element = Ptr(GuiSolidBorderElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColor(desc.borderColor); + element->SetShape(desc.shape); + } + break; + case remoteprotocol::RendererType::SinkBorder: + { + auto element = Ptr(Gui3DBorderElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColors(desc.leftTopColor, desc.rightBottomColor); + } + break; + case remoteprotocol::RendererType::SinkSplitter: + { + auto element = Ptr(Gui3DSplitterElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColors(desc.leftTopColor, desc.rightBottomColor); + element->SetDirection(desc.direction); + } + break; + case remoteprotocol::RendererType::SolidBackground: + { + auto element = Ptr(GuiSolidBackgroundElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColor(desc.backgroundColor); + element->SetShape(desc.shape); + } + break; + case remoteprotocol::RendererType::GradientBackground: + { + auto element = Ptr(GuiGradientBackgroundElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColors(desc.leftTopColor, desc.rightBottomColor); + element->SetDirection(desc.direction); + element->SetShape(desc.shape); + } + break; + case remoteprotocol::RendererType::InnerShadow: + { + auto element = Ptr(GuiInnerShadowElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColor(desc.shadowColor); + element->SetThickness(desc.thickness); + } + break; + case remoteprotocol::RendererType::SolidLabel: + { + auto element = Ptr(GuiSolidLabelElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetColor(desc.textColor); + element->SetAlignments(GetAlignment(desc.horizontalAlignment), GetAlignment(desc.verticalAlignment)); + element->SetWrapLine(desc.wrapLine); + element->SetWrapLineHeightCalculation(desc.wrapLineHeightCalculation); + element->SetEllipse(desc.ellipse); + element->SetMultiline(desc.multiline); + element->SetFont(desc.font.Value()); + element->SetText(desc.text.Value()); + } + break; + case remoteprotocol::RendererType::Polygon: + { + auto element = Ptr(GuiPolygonElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + + element->SetSize(desc.size); + element->SetBorderColor(desc.borderColor); + element->SetBackgroundColor(desc.backgroundColor); + + if (desc.points && desc.points->Count() > 0) + { + element->SetPoints(&desc.points->Get(0), desc.points->Count()); + } + } + break; + case remoteprotocol::RendererType::ImageFrame: + { + auto element = Ptr(GuiImageFrameElement::Create()); + bounds->SetOwnedElement(element); + auto& desc = frame.elements->Get(dom->element.Value()).Get(); + } + break; + default: + CHECK_FAIL(L"This element is not supported yet."); + break; + } + } + + if(dom->children) + { + for (auto child : *dom->children.Obj()) + { + InstallDom(trace, frame, bounds, dom->bounds.x1, dom->bounds.y1, child, cursorCounter); + } + } + + if (dom->cursor) + { + cursorCounter--; + } + } + + GuiBoundsComposition* BuildRootComposition(const remoteprotocol::RenderingTrace& trace, const remoteprotocol::RenderingFrame& frame) + { + vint w = frame.windowSize.clientBounds.Width().value; + vint h = frame.windowSize.clientBounds.Height().value; + auto focusComposition = new GuiBoundsComposition; + { + focusComposition->SetExpectedBounds(Rect({ 5,5 }, { w + 2,h + 2 })); + auto element = Ptr(GuiFocusRectangleElement::Create()); + focusComposition->SetOwnedElement(element); + } + auto canvasComposition = new GuiBoundsComposition; + { + focusComposition->AddChild(canvasComposition); + canvasComposition->SetExpectedBounds(Rect({ 1,1 }, { w,h })); + } + + if (frame.root && frame.root->children) + { + vint cursorCounter = 0; + for (auto child : *frame.root->children.Obj()) + { + InstallDom(trace, frame, canvasComposition, 0, 0, child, cursorCounter); + } + } + return focusComposition; + } + +/*********************************************************************** +UnitTestSnapshotViewerAppWindow +***********************************************************************/ + + void UnitTestSnapshotViewerAppWindow::textListFrames_SelectionChanged(GuiGraphicsComposition* sender, GuiEventArgs& arguments) + { + if (rootComposition) + { + SafeDeleteComposition(rootComposition); + rootComposition = nullptr; + } + + auto nodeObj = treeViewFileNodes->GetSelectedItem(); + if (!nodeObj.GetSharedPtr()) return; + auto node = nodeObj.GetSharedPtr().Cast(); + + auto frameObj = textListFrames->GetSelectedItem(); + if (!frameObj.GetSharedPtr()) return; + auto frame = frameObj.GetSharedPtr().Cast(); + + if (node && node->GetNodeType() == UnitTestSnapshotFileNodeType::File && frame) + { + rootComposition = BuildRootComposition(GetRenderingTrace(node), GetRenderingFrame(frame)); + scRendering->GetContainerComposition()->AddChild(rootComposition); + } + } + + UnitTestSnapshotViewerAppWindow::UnitTestSnapshotViewerAppWindow(Ptr viewModel) + : UnitTestSnapshotViewerWindow(viewModel) + { + textListFrames->SelectionChanged.AttachMethod(this, &UnitTestSnapshotViewerAppWindow::textListFrames_SelectionChanged); + } +} + +/*********************************************************************** +.\SOURCE\GUIUNITTESTSNAPSHOTVIEWER.CPP +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +Source: GacUI UnitTestSnapshotViewer + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +#define GLOBAL_SYMBOL ::vl_workflow_global::GuiUnitTestSnapshotViewer:: +#define GLOBAL_NAME ::vl_workflow_global::GuiUnitTestSnapshotViewer::Instance(). +#define GLOBAL_OBJ &::vl_workflow_global::GuiUnitTestSnapshotViewer::Instance() + +/*********************************************************************** +Global Variables +***********************************************************************/ + +BEGIN_GLOBAL_STORAGE_CLASS(vl_workflow_global_GuiUnitTestSnapshotViewer) + vl_workflow_global::GuiUnitTestSnapshotViewer instance; + INITIALIZE_GLOBAL_STORAGE_CLASS + + instance.__vwsn_ls_UnitTestSnapshotViewerStrings = ::vl::reflection::description::IValueDictionary::Create(); + + ([]() + { + ::gaclib_controls::UnitTestSnapshotViewerStrings::Install(::vl::__vwsn::Parse<::vl::Locale>(::vl::WString::Unmanaged(L"en-US")), ::gaclib_controls::UnitTestSnapshotViewerStrings::__vwsn_ls_en_US_BuildStrings(::vl::__vwsn::Parse<::vl::Locale>(::vl::WString::Unmanaged(L"en-US")))); + } + )(); + FINALIZE_GLOBAL_STORAGE_CLASS + + instance.__vwsn_ls_UnitTestSnapshotViewerStrings = nullptr; +END_GLOBAL_STORAGE_CLASS(vl_workflow_global_GuiUnitTestSnapshotViewer) + +namespace vl_workflow_global +{ +/*********************************************************************** +Global Functions +***********************************************************************/ + + GuiUnitTestSnapshotViewer& GuiUnitTestSnapshotViewer::Instance() + { + return Getvl_workflow_global_GuiUnitTestSnapshotViewer().instance; + } + +/*********************************************************************** +Closures +***********************************************************************/ + + //------------------------------------------------------------------- + + __vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetStrings(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetStrings(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::Ptr<::vl::reflection::description::IValueEnumerable> __vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>>(__vwsn_item_); + return ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueEnumerable>(::vl::__vwsn::This(item.Obj())->GetChildren()); + } + + //------------------------------------------------------------------- + + __vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::WString __vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_item_) const + { + auto item = ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>>(__vwsn_item_); + return ::vl::__vwsn::This(item.Obj())->GetName(); + } + + //------------------------------------------------------------------- + + __vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->textListFrames)->GetItemSource(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::Ptr<::vl::reflection::description::IValueEnumerable>>(__vwsn_value_); + if ((__vwsn_old_.Obj() == __vwsn_new_.Obj())) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->textListFrames)->SetItemSource(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_16)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_16)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_19)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_22)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->__vwsn_precompile_22)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + void __vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsn_value_) const + { + auto __vwsn_old_ = ::vl::__vwsn::This(__vwsnthis_0->self)->GetText(); + auto __vwsn_new_ = ::vl::__vwsn::Unbox<::vl::WString>(__vwsn_value_); + if ((__vwsn_old_ == __vwsn_new_)) + { + return; + } + ::vl::__vwsn::This(__vwsnthis_0->self)->SetText(__vwsn_new_); + } + + //------------------------------------------------------------------- + + __vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::__vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + } + + ::vl::Ptr<::vl::presentation::GuiImageData> __vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_::operator()(const ::vl::reflection::description::Value& __vwsno_1) const + { + return ::vl::__vwsn::This(__vwsnthis_0->self)->GetImageFromType(::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>>(__vwsno_1).Obj())->GetNodeType()); + } + + //------------------------------------------------------------------- + + __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTreeView*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueEnumerable>([&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedItem()).Obj())->GetFrames(); } catch(...){ return ::vl::collections::LazyList<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>>(); } }()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->treeViewFileNodes; } catch(...){ return static_cast<::vl::presentation::controls::GuiBindableTreeView*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, ::vl::Func(this, &__vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTreeView*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedItem()).Obj())->GetDomAsJsonText(); } catch(...){ return ::vl::WString::Unmanaged(L""); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->textListFrames; } catch(...){ return static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, ::vl::Func(this, &__vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedItem()).Obj())->GetCommandsAsJsonText(); } catch(...){ return ::vl::WString::Unmanaged(L""); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->textListFrames; } catch(...){ return static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, ::vl::Func(this, &__vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = [&](){ try{ return ::vl::__vwsn::This(::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>>(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetSelectedItem()).Obj())->GetElementsAsJsonText(); } catch(...){ return ::vl::WString::Unmanaged(L""); } }(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1) + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsnthis_0->textListFrames; } catch(...){ return static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, ::vl::Func(this, &__vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->SelectionChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsnctor___vwsn_this_, ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsn_this_(__vwsnctor___vwsn_this_) + , __vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::gaclib_controls::UnitTestSnapshotViewerWindow*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::vl::__vwsn::This(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetStrings().Obj())->WindowTitle(); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0() + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return __vwsn_this_; } catch(...){ return static_cast<::gaclib_controls::UnitTestSnapshotViewerWindow*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StringsChanged, ::vl::Func(this, &__vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->StringsChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::gaclib_controls::UnitTestSnapshotViewerWindow*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0) + :__vwsnthis_0(::vl::__vwsn::This(__vwsnctorthis_0)) + { + this->__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiApplication*>(nullptr); + this->__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>(); + this->__vwsn_bind_opened_ = false; + this->__vwsn_bind_closed_ = false; + } + + void __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_activator_() + { + auto __vwsn_bind_activator_result_ = ::gaclib_controls::UnitTestSnapshotViewerStrings::Get(::vl::__vwsn::This(__vwsn_bind_cache_0)->GetLocale()); + ::vl::__vwsn::EventInvoke(this->ValueChanged)(::vl::__vwsn::Box(__vwsn_bind_activator_result_)); + } + + void __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0() + { + this->__vwsn_bind_activator_(); + } + + bool __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Open() + { + if ((! __vwsn_bind_opened_)) + { + (__vwsn_bind_opened_ = true); + (__vwsn_bind_cache_0 = [&](){ try{ return ::vl::presentation::controls::GetApplication(); } catch(...){ return static_cast<::vl::presentation::controls::GuiApplication*>(nullptr); } }()); + (__vwsn_bind_handler_0_0 = [&](){ try{ return ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LocaleChanged, ::vl::Func(this, &__vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::__vwsn_bind_callback_0_0)); } catch(...){ return ::vl::Ptr<::vl::reflection::description::IEventHandler>(); } }()); + return true; + } + return false; + } + + bool __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Update() + { + if ((__vwsn_bind_opened_ && (! __vwsn_bind_closed_))) + { + this->__vwsn_bind_activator_(); + return true; + } + return false; + } + + bool __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription::Close() + { + if ((! __vwsn_bind_closed_)) + { + (__vwsn_bind_closed_ = true); + if (static_cast(__vwsn_bind_handler_0_0)) + { + ::vl::__vwsn::EventDetach(::vl::__vwsn::This(__vwsn_bind_cache_0)->LocaleChanged, __vwsn_bind_handler_0_0); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + } + (__vwsn_bind_cache_0 = static_cast<::vl::presentation::controls::GuiApplication*>(nullptr)); + (__vwsn_bind_handler_0_0 = ::vl::Ptr<::vl::reflection::description::IEventHandler>()); + return true; + } + return false; + } + + //------------------------------------------------------------------- + + __vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings::__vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings() + { + } + + ::vl::WString __vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings::WindowTitle() + { + return ::vl::WString::Unmanaged(L"Unit Test Snapshot Viewer"); + } + +} + +/*********************************************************************** +Class (::gaclib_controls::IUnitTestSnapshotFileNode) +***********************************************************************/ + +namespace gaclib_controls +{ +/*********************************************************************** +Class (::gaclib_controls::IUnitTestSnapshotFrame) +***********************************************************************/ + +/*********************************************************************** +Class (::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) +***********************************************************************/ + +/*********************************************************************** +Class (::gaclib_controls::IUnitTestSnapshotViewerViewModel) +***********************************************************************/ + +/*********************************************************************** +Class (::gaclib_controls::UnitTestSnapshotViewerStrings) +***********************************************************************/ + + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> UnitTestSnapshotViewerStrings::__vwsn_ls_en_US_BuildStrings(::vl::Locale __vwsn_ls_locale) + { + return ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings>(new ::vl_workflow_global::__vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings()); + } + + void UnitTestSnapshotViewerStrings::Install(::vl::Locale __vwsn_ls_locale, ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_ls_impl) + { + if (::vl::__vwsn::This(::vl::__vwsn::This(GLOBAL_NAME __vwsn_ls_UnitTestSnapshotViewerStrings.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(__vwsn_ls_locale))) + { + throw ::vl::Exception(((::vl::WString::Unmanaged(L"Localized strings \"gaclib_controls::UnitTestSnapshotViewerStrings\" has already registered for locale \"") + ::vl::__vwsn::ToString(__vwsn_ls_locale)) + ::vl::WString::Unmanaged(L"\"."))); + } + ::vl::__vwsn::This(GLOBAL_NAME __vwsn_ls_UnitTestSnapshotViewerStrings.Obj())->Set(::vl::__vwsn::Box(__vwsn_ls_locale), ::vl::__vwsn::Box(__vwsn_ls_impl)); + } + + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> UnitTestSnapshotViewerStrings::Get(::vl::Locale __vwsn_ls_locale) + { + if (::vl::__vwsn::This(::vl::__vwsn::This(GLOBAL_NAME __vwsn_ls_UnitTestSnapshotViewerStrings.Obj())->GetKeys().Obj())->Contains(::vl::__vwsn::Box(__vwsn_ls_locale))) + { + return ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings>>(::vl::__vwsn::This(GLOBAL_NAME __vwsn_ls_UnitTestSnapshotViewerStrings.Obj())->Get(::vl::__vwsn::Box(__vwsn_ls_locale))); + } + return ::vl::__vwsn::Unbox<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings>>(::vl::__vwsn::This(GLOBAL_NAME __vwsn_ls_UnitTestSnapshotViewerStrings.Obj())->Get(::vl::__vwsn::Box(::vl::__vwsn::Parse<::vl::Locale>(::vl::WString::Unmanaged(L"en-US"))))); + } + + UnitTestSnapshotViewerStrings::UnitTestSnapshotViewerStrings() + { + } + +/*********************************************************************** +Class (::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) +***********************************************************************/ + + void UnitTestSnapshotViewerWindowConstructor::__vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize(::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsn_this_) + { + (this->self = __vwsn_this_); + (this->ViewModel = ::vl::__vwsn::This(__vwsn_this_)->GetViewModel()); + { + ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(1920); __vwsn_temp__.y = static_cast<::vl::vint>(1080); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_0 = new ::vl::presentation::compositions::GuiTableComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetCellPadding(static_cast<::vl::vint>(5)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowsAndColumns(static_cast<::vl::vint>(1), static_cast<::vl::vint>(4)); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetRowOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(200); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(100); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(2), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(200); return __vwsn_temp__; }()); + ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(3), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); + } + (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiColumnSplitterComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnsToTheLeft(static_cast<::vl::vint>(2)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); + } + (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiColumnSplitterComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetColumnsToTheLeft(static_cast<::vl::vint>(3)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_2)); + } + (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); + } + { + (this->treeViewFileNodes = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeViewFileNodes"), ::vl::__vwsn::Box(this->treeViewFileNodes)); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + } + (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->treeViewFileNodes)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_3)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->treeViewFileNodes)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); + } + (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_6 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); + } + { + (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetText(::vl::WString::Unmanaged(L"Frames")); + } + { + (this->textListFrames = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textListFrames"), ::vl::__vwsn::Box(this->textListFrames)); + } + { + ::vl::__vwsn::This(this->textListFrames)->SetTextProperty(vl::Func(::vl_workflow_global::__vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + } + (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->textListFrames)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->textListFrames)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->textListFrames)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_8)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->textListFrames)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_8)); + } + (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_5)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_6)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); + } + (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiCellComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); + } + { + (this->__vwsn_precompile_11 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); + } + { + (this->__vwsn_precompile_13 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetText(::vl::WString::Unmanaged(L"Rendering")); + } + { + (this->scRendering = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"scRendering"), ::vl::__vwsn::Box(this->scRendering)); + } + (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->scRendering)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->scRendering)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->scRendering)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_13)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->scRendering)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_13)); + } + { + (this->__vwsn_precompile_15 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->SetText(::vl::WString::Unmanaged(L"DOM")); + } + { + (this->__vwsn_precompile_16 = new ::vl::presentation::controls::GuiMultilineTextBox(::vl::presentation::theme::ThemeName::MultilineTextBox)); + } + (this->__vwsn_precompile_17 = ::vl::__vwsn::This(this->__vwsn_precompile_16)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_16)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_15)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_16)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_15)); + } + { + (this->__vwsn_precompile_18 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetText(::vl::WString::Unmanaged(L"Commands")); + } + { + (this->__vwsn_precompile_19 = new ::vl::presentation::controls::GuiMultilineTextBox(::vl::presentation::theme::ThemeName::MultilineTextBox)); + } + (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->__vwsn_precompile_19)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_19)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_18)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_19)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_18)); + } + { + (this->__vwsn_precompile_21 = new ::vl::presentation::controls::GuiTabPage(::vl::presentation::theme::ThemeName::CustomControl)); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetText(::vl::WString::Unmanaged(L"Elements")); + } + { + (this->__vwsn_precompile_22 = new ::vl::presentation::controls::GuiMultilineTextBox(::vl::presentation::theme::ThemeName::MultilineTextBox)); + } + (this->__vwsn_precompile_23 = ::vl::__vwsn::This(this->__vwsn_precompile_22)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_23)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = static_cast<::vl::vint>(5); __vwsn_temp__.bottom = static_cast<::vl::vint>(5); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetHorizontalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_22)->SetVerticalAlwaysVisible(false); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_21)->AddChild(static_cast<::vl::presentation::controls::GuiControl*>(this->__vwsn_precompile_22)); + } + { + auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueObservableList>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetPages()); + ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->__vwsn_precompile_21)); + } + (this->__vwsn_precompile_12 = ::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition()); + { + ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_10)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->__vwsn_precompile_11)->GetBoundsComposition())); + } + { + ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_10)); + } + { + ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetItemSource(::vl::__vwsn::Box(::vl::__vwsn::This(this->ViewModel.Obj())->GetRootNode())); + } + { + ::vl::__vwsn::This(this->treeViewFileNodes)->SetImageProperty(vl::Func(::vl_workflow_global::__vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(__vwsn_this_, this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + { + auto __vwsn_created_subscription_ = ::vl::Ptr<::vl::reflection::description::IValueSubscription>(new ::vl_workflow_global::__vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(this)); + ::vl::__vwsn::EventAttach(::vl::__vwsn::This(__vwsn_created_subscription_.Obj())->ValueChanged, vl::Func(::vl_workflow_global::__vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(this))); + ::vl::__vwsn::This(__vwsn_this_)->AddSubscription(__vwsn_created_subscription_); + } + } + + UnitTestSnapshotViewerWindowConstructor::UnitTestSnapshotViewerWindowConstructor() + : ViewModel(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel>()) + , self(static_cast<::gaclib_controls::UnitTestSnapshotViewerWindow*>(nullptr)) + , treeViewFileNodes(static_cast<::vl::presentation::controls::GuiBindableTreeView*>(nullptr)) + , textListFrames(static_cast<::vl::presentation::controls::GuiBindableTextList*>(nullptr)) + , scRendering(static_cast<::vl::presentation::controls::GuiScrollContainer*>(nullptr)) + , __vwsn_precompile_0(static_cast<::vl::presentation::compositions::GuiTableComposition*>(nullptr)) + , __vwsn_precompile_1(static_cast<::vl::presentation::compositions::GuiColumnSplitterComposition*>(nullptr)) + , __vwsn_precompile_2(static_cast<::vl::presentation::compositions::GuiColumnSplitterComposition*>(nullptr)) + , __vwsn_precompile_3(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_4(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_5(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_6(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_7(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_8(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_9(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_10(static_cast<::vl::presentation::compositions::GuiCellComposition*>(nullptr)) + , __vwsn_precompile_11(static_cast<::vl::presentation::controls::GuiTab*>(nullptr)) + , __vwsn_precompile_12(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_13(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_14(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_15(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_16(static_cast<::vl::presentation::controls::GuiMultilineTextBox*>(nullptr)) + , __vwsn_precompile_17(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_18(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_19(static_cast<::vl::presentation::controls::GuiMultilineTextBox*>(nullptr)) + , __vwsn_precompile_20(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + , __vwsn_precompile_21(static_cast<::vl::presentation::controls::GuiTabPage*>(nullptr)) + , __vwsn_precompile_22(static_cast<::vl::presentation::controls::GuiMultilineTextBox*>(nullptr)) + , __vwsn_precompile_23(static_cast<::vl::presentation::compositions::GuiBoundsComposition*>(nullptr)) + { + } + +/*********************************************************************** +Class (::gaclib_controls::UnitTestSnapshotViewerWindow) +***********************************************************************/ + + ::vl::Ptr<::vl::presentation::GuiImageData> UnitTestSnapshotViewerWindow::GetImageFromType(::gaclib_controls::UnitTestSnapshotFileNodeType nodeType) + { + if ((! static_cast(this->imageFolder))) + { + (this->imageFolder = ::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(this->ResolveResource(::vl::WString::Unmanaged(L"import-res"), ::vl::WString::Unmanaged(L"GuiFakeDialogServiceUI/Images/Folder"), true).Obj()))); + } + if ((! static_cast(this->imageFile))) + { + (this->imageFile = ::vl::__vwsn::Ensure(::vl::__vwsn::SharedPtrCast<::vl::presentation::GuiImageData>(this->ResolveResource(::vl::WString::Unmanaged(L"import-res"), ::vl::WString::Unmanaged(L"GuiFakeDialogServiceUI/Images/File"), true).Obj()))); + } + { + auto __vwsn_switch_0 = nodeType; + if ((__vwsn_switch_0 == ::gaclib_controls::UnitTestSnapshotFileNodeType::File)) + { + return this->imageFile; + } + else if ((__vwsn_switch_0 == ::gaclib_controls::UnitTestSnapshotFileNodeType::Folder)) + { + return this->imageFolder; + } + else + { + throw ::vl::Exception(::vl::WString::Unmanaged(L"Unknown value of UnitTestSnapshotFileNodeType")); + } + } + } + + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> UnitTestSnapshotViewerWindow::GetStrings() + { + return this->__vwsn_prop_Strings; + } + void UnitTestSnapshotViewerWindow::SetStrings(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_value_) + { + if ((this->__vwsn_prop_Strings.Obj() != __vwsn_value_.Obj())) + { + (this->__vwsn_prop_Strings = __vwsn_value_); + ::vl::__vwsn::EventInvoke(this->StringsChanged)(); + } + } + + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> UnitTestSnapshotViewerWindow::GetViewModel() + { + return this->__vwsn_parameter_ViewModel; + } + + UnitTestSnapshotViewerWindow::UnitTestSnapshotViewerWindow(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> __vwsn_ctor_parameter_ViewModel) + : ::vl::presentation::controls::GuiWindow(::vl::presentation::theme::ThemeName::Window) + , imageFolder(::vl::Ptr<::vl::presentation::GuiImageData>()) + , imageFile(::vl::Ptr<::vl::presentation::GuiImageData>()) + , __vwsn_prop_Strings(::gaclib_controls::UnitTestSnapshotViewerStrings::Get(::vl::__vwsn::Parse<::vl::Locale>(::vl::WString::Unmanaged(L"en-US")))) + , __vwsn_parameter_ViewModel(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel>()) + { + (this->__vwsn_parameter_ViewModel = __vwsn_ctor_parameter_ViewModel); + auto __vwsn_resource_ = ::vl::__vwsn::This(::vl::presentation::GetResourceManager())->GetResourceFromClassName(::vl::WString::Unmanaged(L"gaclib_controls::UnitTestSnapshotViewerWindow")); + auto __vwsn_resolver_ = ::vl::Ptr<::vl::presentation::GuiResourcePathResolver>(new ::vl::presentation::GuiResourcePathResolver(__vwsn_resource_, ::vl::__vwsn::This(__vwsn_resource_.Obj())->GetWorkingDirectory())); + ::vl::__vwsn::This(this)->SetResourceResolver(__vwsn_resolver_); + ::vl::__vwsn::This(this)->__vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize(this); + } + + UnitTestSnapshotViewerWindow::~UnitTestSnapshotViewerWindow() + { + this->FinalizeInstanceRecursively(static_cast<::vl::presentation::controls::GuiControlHost*>(this)); + } + +} +#undef GLOBAL_SYMBOL +#undef GLOBAL_NAME +#undef GLOBAL_OBJ + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + + +/*********************************************************************** +.\SOURCE\GUIUNITTESTSNAPSHOTVIEWERRESOURCE.CPP +***********************************************************************/ + +namespace vl +{ + namespace presentation + { + namespace user_resource + { + using namespace collections; + using namespace stream; + using namespace controls; + + class GuiUnitTestSnapshotViewerResourceReader + { + public: + static const vint parserBufferLength = 480; // 830 bytes before compressing + static const vint parserBufferBlock = 1024; + static const vint parserBufferRemain = 480; + static const vint parserBufferRows = 1; + static const char* parserBuffer[1]; + + static void ReadToStream(vl::stream::MemoryStream& stream) + { + DecompressStream(parserBuffer, true, parserBufferRows, parserBufferBlock, parserBufferRemain, stream); + } + }; + + const char* GuiUnitTestSnapshotViewerResourceReader::parserBuffer[] = { + "\x3E\x03\x00\x00\xD8\x01\x00\x00\x63\x00\x01\x82\x80\x00\x81\x80\x1E\x29\x65\x73\x2F\x35\x32\x3B\x31\x33\x26\x65\x74\x21\x24\x31\x32\x88\x10\x27\x61\x6D\x25\x3D\x12\x17\x21\x3B\x34\x55\x6E\x29\x34\x34\x29\x84\x3B\x29\x6E\x61\x30\x33\x38\x37\x34\x3A\x2B\x69\x65\x37\x25\x32\x3A\x10\x10\x2B\x34\xF3\x29\x2F\x3E\x34\x8D\x18\x17\x30\x22\x3E\x1C\x14\x25\x30\x39\x32\x6E\x64\x08\xA3\x31\x9B\x3B\x17\xA1\x2F\x08\x8A\x8C\x8E\x80\x8A\x88\x8A\x12\xBE\x05\x03\x82\x80\x08\xAF\x80\x5E\x81\x8C\x2F\x33\x31\x30\x37\x34\x7A\x65\x24\x33\x24\x3A\x39\x34\x37\x67\x73\x06\x1F\xA0\x03\xB9\x81\x29\x63\x6E\xB0\x34\x38\x04\xB9\xBF\x80\x49\x6E\x33\x32\x8E\x36\x84\x02\xBA\x87\x81\xA5\x98\x34\x3F\x04\xBA\xC7\x01\xC3\x2C\x21\x33\x3B\x38\x8C\x8D\x08\xE3\x2F\x32\x34\x34\xB8\x00\x01\x74\x8C\x21\xC2\x87\x21\x33\x31\x23\x48\xC3\x3C\x86\x39\x37\x32\xCE\xCF\x01\x74\x83\x12\xD2\x83\x20\x38\x38\x9E\xDB\x9F\xB3\xDF\xAD\x04\xBA\xDF\x91\xB7\xEA\xCD\x30\x3A\x39\x85\x39\x6A\x9D\x34\xAA\xE1\x86\x8C\x90\x91\x24\xA6\xA8\x8A\x9C\x96\x94\x98\x99\x34\xAE\x23\x37\xDC\xDC\xAD\xC4\xEF\x02\x97\xE5\x39\x04\xBC\xF1\xE7\x8F\x21\xA3\xA5\x83\xC3\xEB\x95\x97\x97\x31\xB3\xB2\x3D\xE3\x80\xE0\xAE\xFB\x4E\x1B\xED\x26\xB1\xC3\x30\x37\x3A\x4A\x61\x5C\x56\x80\x2E\x2E\x0F\x09\x81\x07\x86\x85\x6B\x18\x55\x09\x1E\x08\x1A\xF4\x42\x41\x04\x5D\x13\x81\x48\x42\x19\x6C\x25\x13\x18\x1D\x3B\x6E\x1D\x7F\x7F\x4A\x79\x04\x5E\x88\x01\x48\x86\x8A\x81\x17\x99\x8B\x85\x87\x2F\x14\x19\x1F\x51\x45\x73\x19\x5D\x1A\x7B\x5B\x6E\x52\x73\x29\x9A\x8C\x84\x4F\x50\x3F\x77\x1B\x5B\x0F\x91\x81\x42\x68\x5F\x44\x90\x03\x14\x0B\x4D\x45\x1A\x11\x6F\x2C\x1A\x52\x1C\x76\x5C\x51\x94\x92\x54\x65\x1E\x67\x02\x74\x58\x91\x40\x14\xC6\x5A\x64\x71\x1A\x19\x9D\x64\x5D\x6C\x5F\x5F\x73\x40\x64\x5C\x68\x92\x64\x65\x96\x59\x45\x19\x66\x9B\x64\x14\x98\x57\x2D\x34\x55\x9D\x40\x67\x26\x67\x5A\x18\x5F\x1A\x6E\x19\x5B\x4D\xB3\x1A\x0E\x0E\xE9\x51\x7C\x79\x4A\xEE\x56\x71\x7C\x4D\x57\x2F\x54\x1B\x1B\x77\x1E\x60", + }; + + class GuiUnitTestSnapshotViewerResourceLoaderPlugin : public Object, public IGuiPlugin + { + public: + + GUI_PLUGIN_NAME(GacGen_GuiUnitTestSnapshotViewerResourceLoader) + { + GUI_PLUGIN_DEPEND(GacUI_Res_Resource); + GUI_PLUGIN_DEPEND(GacUI_Res_TypeResolvers); +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + GUI_PLUGIN_DEPEND(GacUI_Instance_Reflection); + GUI_PLUGIN_DEPEND(GacUI_Compiler_WorkflowTypeResolvers); +#endif + } + + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override + { + if (controllerRelatedPlugins) + { + List errors; + MemoryStream resourceStream; + GuiUnitTestSnapshotViewerResourceReader::ReadToStream(resourceStream); + resourceStream.SeekFromBegin(0); + GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + } + } + + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override + { + } + }; + GUI_REGISTER_PLUGIN(GuiUnitTestSnapshotViewerResourceLoaderPlugin) + } + } +} + + +/*********************************************************************** +.\VIEWMODEL\GUIUNITTESTSNAPSHOTVIEWERVIEWMODEL.CPP +***********************************************************************/ + +namespace vl::presentation::unittest +{ + using namespace collections; + using namespace filesystem; + using namespace gaclib_controls; + using namespace glr::json; + using namespace vl::presentation::remoteprotocol; + +/*********************************************************************** +UnitTestSnapshotFrame +***********************************************************************/ + + class UnitTestSnapshotFrame : public Object, public virtual IUnitTestSnapshotFrame + { + protected: + vint index; + RenderingFrame frame; + WString elements; + WString commands; + WString dom; + JsonFormatting formatting; + + friend const remoteprotocol::RenderingFrame& GetRenderingFrame(Ptr frame) + { + return frame.Cast()->frame; + } + + public: + UnitTestSnapshotFrame(vint _index, RenderingFrame _frame) + : index(_index) + , frame(_frame) + { + formatting.spaceAfterColon = true; + formatting.spaceAfterComma = true; + formatting.crlf = true; + formatting.compact = true; + } + + WString GetName() override + { + if (frame.frameName) + { + return frame.frameName.Value(); + } + else + { + return itow(index); + } + } + + WString GetElementsAsJsonText() override + { + if (elements == L"") + { + elements = JsonToString(ConvertCustomTypeToJson(frame.elements), formatting); + } + return elements; + } + + WString GetCommandsAsJsonText() override + { + if (commands == L"") + { + commands = JsonToString(ConvertCustomTypeToJson(frame.commands), formatting); + } + return commands; + } + + WString GetDomAsJsonText() override + { + if (dom == L"") + { + dom = JsonToString(ConvertCustomTypeToJson(frame.root), formatting); + } + return dom; + } + }; + +/*********************************************************************** +UnitTestSnapshotFileNode +***********************************************************************/ + + class UnitTestSnapshotFileNode : public Object, public virtual IUnitTestSnapshotFileNode + { + protected: + File file; + Ptr renderingTrace; + List> frames; + + friend const remoteprotocol::RenderingTrace& GetRenderingTrace(Ptr node) + { + return *node.Cast()->renderingTrace.Obj(); + } + + void EnsureLoaded() + { + if (!renderingTrace) + { + WString jsonText = file.ReadAllTextByBom(); + Ptr jsonNode; + { + glr::json::Parser parser; + jsonNode = JsonParse(jsonText, parser); + } + renderingTrace = Ptr(new RenderingTrace); + ConvertJsonToCustomType(jsonNode, *renderingTrace.Obj()); + + frames.Clear(); + if (renderingTrace->frames) + { + for (auto [frame, index] : indexed(*renderingTrace->frames.Obj())) + { + frames.Add(Ptr(new UnitTestSnapshotFrame(index, frame))); + } + } + } + } + public: + UnitTestSnapshotFileNode(FilePath _filePath) + : file(_filePath) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestSnapshotFileNode::UnitTestSnapshotFileNode(FilePath)#" + CHECK_ERROR(file.Exists(), ERROR_MESSAGE_PREFIX L"File does not exist."); +#undef ERROR_MESSAGE_PREFIX + } + + UnitTestSnapshotFileNodeType GetNodeType() override + { + return UnitTestSnapshotFileNodeType::File; + } + + WString GetName() override + { + return file.GetFilePath().GetName(); + } + + LazyList> GetChildren() override + { + return {}; + } + + LazyList> GetFrames() override + { + EnsureLoaded(); + return From(frames).Cast(); + } + + void Refresh() override + { + CHECK_FAIL(L"Not Implemented!"); + } + }; + +/*********************************************************************** +UnitTestSnapshotFolderNode +***********************************************************************/ + + class UnitTestSnapshotFolderNode : public Object, public virtual IUnitTestSnapshotFileNode + { + protected: + Folder folder; + Ptr>> children; + + public: + UnitTestSnapshotFolderNode(FilePath _filePath) + : folder(_filePath) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestSnapshotFolderNode::UnitTestSnapshotFolderNode(FilePath)#" + CHECK_ERROR(folder.Exists(), ERROR_MESSAGE_PREFIX L"Folder does not exist."); +#undef ERROR_MESSAGE_PREFIX + } + + UnitTestSnapshotFileNodeType GetNodeType() override + { + return UnitTestSnapshotFileNodeType::Folder; + } + + WString GetName() override + { + return folder.GetFilePath().GetName(); + } + + LazyList> GetChildren() override + { + if (!children) + { + children = Ptr(new List>); + { + List folders; + folder.GetFolders(folders); + for (auto name : From(folders) + .Select([](auto&& folder) {return folder.GetFilePath().GetName(); }) + .OrderBySelf()) + { + children->Add(Ptr(new UnitTestSnapshotFolderNode(folder.GetFilePath() / name))); + } + } + { + List files; + folder.GetFiles(files); + for (auto name : From(files) + .Select([](auto&& file) {return file.GetFilePath().GetName(); }) + .OrderBySelf()) + { + if (name.Length() > 5 && name.Right(5) == L".json") + { + children->Add(Ptr(new UnitTestSnapshotFileNode(folder.GetFilePath() / name))); + } + } + } + } + return children; + } + + LazyList> GetFrames() override + { + return {}; + } + + void Refresh() override + { + CHECK_FAIL(L"Not Implemented!"); + } + }; + +/*********************************************************************** +UnitTestSnapshotViewerViewModel +***********************************************************************/ + + UnitTestSnapshotViewerViewModel::UnitTestSnapshotViewerViewModel(FilePath snapshotFolderPath) + : rootNode(Ptr(new UnitTestSnapshotFolderNode(snapshotFolderPath))) + { + } + + UnitTestSnapshotViewerViewModel::~UnitTestSnapshotViewerViewModel() + { + } + + Ptr UnitTestSnapshotViewerViewModel::GetRootNode() + { + return rootNode; + } +} diff --git a/Import/GacUI.UnitTest.UI.h b/Import/GacUI.UnitTest.UI.h new file mode 100644 index 00000000..7e4bdccf --- /dev/null +++ b/Import/GacUI.UnitTest.UI.h @@ -0,0 +1,536 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.h" +#include "VlppGlrParser.h" +#include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\SOURCE\GUIUNITTESTSNAPSHOTVIEWER.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +Source: GacUI UnitTestSnapshotViewer + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWER +#define VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWER + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +namespace vl_workflow_global +{ + struct __vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + struct __vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + class __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + class __vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings; +} + +namespace __vwsn_enums +{ + enum class _gaclib_controls_UnitTestSnapshotFileNodeType : vl::vuint64_t + { + Folder = 0UL, + File = 1UL, + }; + inline _gaclib_controls_UnitTestSnapshotFileNodeType operator& (_gaclib_controls_UnitTestSnapshotFileNodeType a, _gaclib_controls_UnitTestSnapshotFileNodeType b) { return static_cast<_gaclib_controls_UnitTestSnapshotFileNodeType>(static_cast<::vl::vuint64_t>(a) & static_cast<::vl::vuint64_t>(b)); } + inline _gaclib_controls_UnitTestSnapshotFileNodeType operator| (_gaclib_controls_UnitTestSnapshotFileNodeType a, _gaclib_controls_UnitTestSnapshotFileNodeType b) { return static_cast<_gaclib_controls_UnitTestSnapshotFileNodeType>(static_cast<::vl::vuint64_t>(a) | static_cast<::vl::vuint64_t>(b)); } + +} +namespace gaclib_controls +{ + using UnitTestSnapshotFileNodeType = ::__vwsn_enums::_gaclib_controls_UnitTestSnapshotFileNodeType; + + class IUnitTestSnapshotFileNode; + class IUnitTestSnapshotFrame; + class IUnitTestSnapshotViewerStringsStrings; + class IUnitTestSnapshotViewerViewModel; + class UnitTestSnapshotViewerStrings; + class UnitTestSnapshotViewerWindowConstructor; + class UnitTestSnapshotViewerWindow; + + class IUnitTestSnapshotFileNode : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + virtual ::gaclib_controls::UnitTestSnapshotFileNodeType GetNodeType() = 0; + virtual ::vl::WString GetName() = 0; + virtual ::vl::collections::LazyList<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>> GetChildren() = 0; + virtual ::vl::collections::LazyList<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>> GetFrames() = 0; + virtual void Refresh() = 0; + }; + + class IUnitTestSnapshotFrame : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + virtual ::vl::WString GetName() = 0; + virtual ::vl::WString GetElementsAsJsonText() = 0; + virtual ::vl::WString GetCommandsAsJsonText() = 0; + virtual ::vl::WString GetDomAsJsonText() = 0; + }; + + class IUnitTestSnapshotViewerStringsStrings : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + virtual ::vl::WString WindowTitle() = 0; + }; + + class IUnitTestSnapshotViewerViewModel : public virtual ::vl::reflection::IDescriptable, public ::vl::reflection::Description + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + virtual ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode> GetRootNode() = 0; + }; + + class UnitTestSnapshotViewerStrings : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + public: + static ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_ls_en_US_BuildStrings(::vl::Locale __vwsn_ls_locale); + static void Install(::vl::Locale __vwsn_ls_locale, ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_ls_impl); + static ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> Get(::vl::Locale __vwsn_ls_locale); + UnitTestSnapshotViewerStrings(); + }; + + class UnitTestSnapshotViewerWindowConstructor : public ::vl::Object, public ::vl::reflection::Description + { + friend class ::vl_workflow_global::__vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + protected: + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> ViewModel; + ::gaclib_controls::UnitTestSnapshotViewerWindow* self; + ::vl::presentation::controls::GuiBindableTreeView* treeViewFileNodes; + ::vl::presentation::controls::GuiBindableTextList* textListFrames; + ::vl::presentation::controls::GuiScrollContainer* scRendering; + ::vl::presentation::compositions::GuiTableComposition* __vwsn_precompile_0; + ::vl::presentation::compositions::GuiColumnSplitterComposition* __vwsn_precompile_1; + ::vl::presentation::compositions::GuiColumnSplitterComposition* __vwsn_precompile_2; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_3; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_4; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_5; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_6; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_7; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_8; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_9; + ::vl::presentation::compositions::GuiCellComposition* __vwsn_precompile_10; + ::vl::presentation::controls::GuiTab* __vwsn_precompile_11; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_12; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_13; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_14; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_15; + ::vl::presentation::controls::GuiMultilineTextBox* __vwsn_precompile_16; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_17; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_18; + ::vl::presentation::controls::GuiMultilineTextBox* __vwsn_precompile_19; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_20; + ::vl::presentation::controls::GuiTabPage* __vwsn_precompile_21; + ::vl::presentation::controls::GuiMultilineTextBox* __vwsn_precompile_22; + ::vl::presentation::compositions::GuiBoundsComposition* __vwsn_precompile_23; + void __vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize(::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsn_this_); + public: + UnitTestSnapshotViewerWindowConstructor(); + }; + + class UnitTestSnapshotViewerWindow : public ::vl::presentation::controls::GuiWindow, public ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor, public ::vl::reflection::Description + { + friend class ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor; + friend class ::vl_workflow_global::__vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend class ::vl_workflow_global::__vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription; + friend struct ::vl_workflow_global::__vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; + friend struct ::vl_workflow_global::__vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_; +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + friend struct ::vl::reflection::description::CustomTypeDescriptorSelector; +#endif + private: + ::vl::Ptr<::vl::presentation::GuiImageData> imageFolder; + ::vl::Ptr<::vl::presentation::GuiImageData> imageFile; + ::vl::Ptr<::vl::presentation::GuiImageData> GetImageFromType(::gaclib_controls::UnitTestSnapshotFileNodeType nodeType); + public: + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_prop_Strings; + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> GetStrings(); + void SetStrings(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerStringsStrings> __vwsn_value_); + ::vl::Event StringsChanged; + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> __vwsn_parameter_ViewModel; + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> GetViewModel(); + UnitTestSnapshotViewerWindow(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel> __vwsn_ctor_parameter_ViewModel); + ~UnitTestSnapshotViewerWindow(); + }; + +} +/*********************************************************************** +Global Variables and Functions +***********************************************************************/ + +namespace vl_workflow_global +{ + class GuiUnitTestSnapshotViewer + { + public: + + ::vl::Ptr<::vl::reflection::description::IValueDictionary> __vwsn_ls_UnitTestSnapshotViewerStrings; + + static GuiUnitTestSnapshotViewer& Instance(); + }; + +/*********************************************************************** +Closures +***********************************************************************/ + + struct __vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf10_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::Ptr<::vl::reflection::description::IValueEnumerable> operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::WString operator()(const ::vl::reflection::description::Value& __vwsn_item_) const; + }; + + struct __vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf8_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnf9_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + void operator()(const ::vl::reflection::description::Value& __vwsn_value_) const; + }; + + struct __vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_ + { + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsno4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize_(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::Ptr<::vl::presentation::GuiImageData> operator()(const ::vl::reflection::description::Value& __vwsno_1) const; + }; + + class __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc1_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiBindableTreeView* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc2_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiBindableTextList* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc3_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiBindableTextList* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc4_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiBindableTextList* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(::vl::presentation::compositions::GuiGraphicsComposition* __vwsn_bind_callback_argument_0, ::vl::presentation::compositions::GuiEventArgs* __vwsn_bind_callback_argument_1); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsn_this_; + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc5_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsnctor___vwsn_this_, ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::gaclib_controls::UnitTestSnapshotViewerWindow* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription : public ::vl::Object, public virtual ::vl::reflection::description::IValueSubscription + { + public: + ::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnthis_0; + + __vwsnc6_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerWindowConstructor___vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize__vl_reflection_description_IValueSubscription(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor* __vwsnctorthis_0); + + ::vl::presentation::controls::GuiApplication* __vwsn_bind_cache_0 = nullptr; + ::vl::Ptr<::vl::reflection::description::IEventHandler> __vwsn_bind_handler_0_0; + bool __vwsn_bind_opened_ = false; + bool __vwsn_bind_closed_ = false; + void __vwsn_bind_activator_(); + void __vwsn_bind_callback_0_0(); + bool Open() override; + bool Update() override; + bool Close() override; + }; + + class __vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings : public ::vl::Object, public virtual ::gaclib_controls::IUnitTestSnapshotViewerStringsStrings + { + public: + __vwsnc7_GuiUnitTestSnapshotViewer_gaclib_controls_UnitTestSnapshotViewerStrings___vwsn_ls_en_US_BuildStrings__gaclib_controls_IUnitTestSnapshotViewerStringsStrings(); + + ::vl::WString WindowTitle() override; + }; +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +#endif + + +/*********************************************************************** +.\SOURCE\GUIUNITTESTSNAPSHOTVIEWERINCLUDES.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +Source: GacUI UnitTestSnapshotViewer + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWERINCLUDES +#define VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWERINCLUDES + + +#endif + + +/*********************************************************************** +.\VIEWMODEL\GUIUNITTESTSNAPSHOTVIEWERVIEWMODEL.H +***********************************************************************/ + +namespace vl::presentation::remoteprotocol +{ + struct RenderingFrame; + struct RenderingTrace; +} + +namespace vl::presentation::unittest +{ + class UnitTestSnapshotViewerViewModel + : public Object + , public virtual gaclib_controls::IUnitTestSnapshotViewerViewModel + { + protected: + Ptr rootNode; + + public: + UnitTestSnapshotViewerViewModel(filesystem::FilePath snapshotFolderPath); + ~UnitTestSnapshotViewerViewModel(); + + Ptr GetRootNode() override; + }; + + extern const remoteprotocol::RenderingTrace& GetRenderingTrace(Ptr node); + extern const remoteprotocol::RenderingFrame& GetRenderingFrame(Ptr frame); +} + +/*********************************************************************** +.\APPLICATION\GUIUNITTESTSNAPSHOTVIEWERAPP.H +***********************************************************************/ + +namespace gaclib_controls +{ + class UnitTestSnapshotViewerAppWindow : public UnitTestSnapshotViewerWindow + { + protected: + vl::presentation::compositions::GuiBoundsComposition* rootComposition = nullptr; + + void textListFrames_SelectionChanged(vl::presentation::compositions::GuiGraphicsComposition* sender, vl::presentation::compositions::GuiEventArgs& arguments); + + public: + UnitTestSnapshotViewerAppWindow(vl::Ptr viewModel); + }; +} diff --git a/Import/GacUI.UnitTest.UIReflection.cpp b/Import/GacUI.UnitTest.UIReflection.cpp new file mode 100644 index 00000000..20c542be --- /dev/null +++ b/Import/GacUI.UnitTest.UIReflection.cpp @@ -0,0 +1,197 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.UnitTest.UIReflection.h" + +/*********************************************************************** +.\GUIUNITTESTSNAPSHOTVIEWERREFLECTION.CPP +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +Source: GacUI UnitTestSnapshotViewer + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + IMPL_CPP_TYPE_INFO(gaclib_controls::IUnitTestSnapshotFileNode) + IMPL_CPP_TYPE_INFO(gaclib_controls::IUnitTestSnapshotFrame) + IMPL_CPP_TYPE_INFO(gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + IMPL_CPP_TYPE_INFO(gaclib_controls::IUnitTestSnapshotViewerViewModel) + IMPL_CPP_TYPE_INFO(gaclib_controls::UnitTestSnapshotFileNodeType) + IMPL_CPP_TYPE_INFO(gaclib_controls::UnitTestSnapshotViewerStrings) + IMPL_CPP_TYPE_INFO(gaclib_controls::UnitTestSnapshotViewerWindow) + IMPL_CPP_TYPE_INFO(gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA +#define _ , + BEGIN_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotFileNode) + CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) + CLASS_MEMBER_METHOD(GetChildren, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetFrames, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetName, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetNodeType, NO_PARAMETER) + CLASS_MEMBER_METHOD(Refresh, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(Children, GetChildren) + CLASS_MEMBER_PROPERTY_READONLY(Frames, GetFrames) + CLASS_MEMBER_PROPERTY_READONLY(Name, GetName) + CLASS_MEMBER_PROPERTY_READONLY(NodeType, GetNodeType) + END_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotFileNode) + + BEGIN_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotFrame) + CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) + CLASS_MEMBER_METHOD(GetCommandsAsJsonText, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetDomAsJsonText, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetElementsAsJsonText, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetName, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(CommandsAsJsonText, GetCommandsAsJsonText) + CLASS_MEMBER_PROPERTY_READONLY(DomAsJsonText, GetDomAsJsonText) + CLASS_MEMBER_PROPERTY_READONLY(ElementsAsJsonText, GetElementsAsJsonText) + CLASS_MEMBER_PROPERTY_READONLY(Name, GetName) + END_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotFrame) + + BEGIN_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) + CLASS_MEMBER_METHOD(WindowTitle, NO_PARAMETER) + END_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + + BEGIN_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotViewerViewModel) + CLASS_MEMBER_BASE(::vl::reflection::IDescriptable) + CLASS_MEMBER_METHOD(GetRootNode, NO_PARAMETER) + CLASS_MEMBER_PROPERTY_READONLY(RootNode, GetRootNode) + END_INTERFACE_MEMBER(::gaclib_controls::IUnitTestSnapshotViewerViewModel) + + BEGIN_ENUM_ITEM(::gaclib_controls::UnitTestSnapshotFileNodeType) + ENUM_CLASS_ITEM(File) + ENUM_CLASS_ITEM(Folder) + END_ENUM_ITEM(::gaclib_controls::UnitTestSnapshotFileNodeType) + + BEGIN_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerStrings) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::UnitTestSnapshotViewerStrings>(), NO_PARAMETER) + CLASS_MEMBER_STATIC_METHOD(__vwsn_ls_en_US_BuildStrings, { L"__vwsn_ls_locale" }) + CLASS_MEMBER_STATIC_METHOD(Get, { L"__vwsn_ls_locale" }) + CLASS_MEMBER_STATIC_METHOD(Install, { L"__vwsn_ls_locale" _ L"__vwsn_ls_impl" }) + END_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerStrings) + + BEGIN_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerWindow) + CLASS_MEMBER_BASE(::vl::presentation::controls::GuiWindow) + CLASS_MEMBER_BASE(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + CLASS_MEMBER_CONSTRUCTOR(::gaclib_controls::UnitTestSnapshotViewerWindow*(::vl::Ptr<::gaclib_controls::IUnitTestSnapshotViewerViewModel>), { L"__vwsn_ctor_parameter_ViewModel" }) + CLASS_MEMBER_METHOD(GetImageFromType, { L"nodeType" }) + CLASS_MEMBER_METHOD(GetStrings, NO_PARAMETER) + CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER) + CLASS_MEMBER_METHOD(SetStrings, { L"__vwsn_value_" }) + CLASS_MEMBER_EVENT(StringsChanged) + CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel) + CLASS_MEMBER_FIELD(__vwsn_prop_Strings) + CLASS_MEMBER_PROPERTY_EVENT(Strings, GetStrings, SetStrings, StringsChanged) + CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel) + CLASS_MEMBER_FIELD(imageFile) + CLASS_MEMBER_FIELD(imageFolder) + END_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerWindow) + + BEGIN_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject) + CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::gaclib_controls::UnitTestSnapshotViewerWindowConstructor>(), NO_PARAMETER) + CLASS_MEMBER_METHOD(__vwsn_gaclib_controls_UnitTestSnapshotViewerWindow_Initialize, { L"__vwsn_this_" }) + CLASS_MEMBER_FIELD(__vwsn_precompile_0) + CLASS_MEMBER_FIELD(__vwsn_precompile_1) + CLASS_MEMBER_FIELD(__vwsn_precompile_10) + CLASS_MEMBER_FIELD(__vwsn_precompile_11) + CLASS_MEMBER_FIELD(__vwsn_precompile_12) + CLASS_MEMBER_FIELD(__vwsn_precompile_13) + CLASS_MEMBER_FIELD(__vwsn_precompile_14) + CLASS_MEMBER_FIELD(__vwsn_precompile_15) + CLASS_MEMBER_FIELD(__vwsn_precompile_16) + CLASS_MEMBER_FIELD(__vwsn_precompile_17) + CLASS_MEMBER_FIELD(__vwsn_precompile_18) + CLASS_MEMBER_FIELD(__vwsn_precompile_19) + CLASS_MEMBER_FIELD(__vwsn_precompile_2) + CLASS_MEMBER_FIELD(__vwsn_precompile_20) + CLASS_MEMBER_FIELD(__vwsn_precompile_21) + CLASS_MEMBER_FIELD(__vwsn_precompile_22) + CLASS_MEMBER_FIELD(__vwsn_precompile_23) + CLASS_MEMBER_FIELD(__vwsn_precompile_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(scRendering) + CLASS_MEMBER_FIELD(self) + CLASS_MEMBER_FIELD(textListFrames) + CLASS_MEMBER_FIELD(treeViewFileNodes) + END_CLASS_MEMBER(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + +#undef _ + class GuiUnitTestSnapshotViewerTypeLoader : public Object, public ITypeLoader + { + public: + void Load(ITypeManager* manager) + { + ADD_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotFileNode) + ADD_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotFrame) + ADD_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + ADD_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotViewerViewModel) + ADD_TYPE_INFO(::gaclib_controls::UnitTestSnapshotFileNodeType) + ADD_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerStrings) + ADD_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerWindow) + ADD_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + } + + void Unload(ITypeManager* manager) + { + } + }; +#endif +#endif + + bool LoadGuiUnitTestSnapshotViewerTypes() + { +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + if (auto manager = GetGlobalTypeManager()) + { + return manager->AddTypeLoader(Ptr(new GuiUnitTestSnapshotViewerTypeLoader)); + } +#endif + return false; + } + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + diff --git a/Import/GacUI.UnitTest.UIReflection.h b/Import/GacUI.UnitTest.UIReflection.h new file mode 100644 index 00000000..d5402d90 --- /dev/null +++ b/Import/GacUI.UnitTest.UIReflection.h @@ -0,0 +1,137 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.UnitTest.UI.h" +#include "GacUIReflection.h" +#include "GacUI.h" +#include "VlppGlrParser.h" +#include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" + +/*********************************************************************** +.\GUIUNITTESTSNAPSHOTVIEWERREFLECTION.H +***********************************************************************/ +/*********************************************************************** +!!!!!! DO NOT MODIFY !!!!!! + +Source: GacUI UnitTestSnapshotViewer + +This file is generated by Workflow compiler +https://github.com/vczh-libraries +***********************************************************************/ + +#ifndef VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWERREFLECTION +#define VCZH_WORKFLOW_COMPILER_GENERATED_GUIUNITTESTSNAPSHOTVIEWERREFLECTION + +#ifndef VCZH_DEBUG_NO_REFLECTION +#endif + +#if defined( _MSC_VER) +#pragma warning(push) +#pragma warning(disable:4250) +#elif defined(__clang__) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wparentheses-equality" +#elif defined(__GNUC__) +#pragma GCC diagnostic push +#endif + +/*********************************************************************** +Reflection +***********************************************************************/ + +namespace vl +{ + namespace reflection + { + namespace description + { +#ifndef VCZH_DEBUG_NO_REFLECTION + DECL_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotFileNode) + DECL_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotFrame) + DECL_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + DECL_TYPE_INFO(::gaclib_controls::IUnitTestSnapshotViewerViewModel) + DECL_TYPE_INFO(::gaclib_controls::UnitTestSnapshotFileNodeType) + DECL_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerStrings) + DECL_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerWindow) + DECL_TYPE_INFO(::gaclib_controls::UnitTestSnapshotViewerWindowConstructor) + +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::gaclib_controls::IUnitTestSnapshotFileNode) + ::vl::collections::LazyList<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode>> GetChildren() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetChildren); + } + ::vl::collections::LazyList<::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFrame>> GetFrames() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetFrames); + } + ::vl::WString GetName() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetName); + } + ::gaclib_controls::UnitTestSnapshotFileNodeType GetNodeType() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetNodeType); + } + void Refresh() override + { + INVOKE_INTERFACE_PROXY_NOPARAMS(Refresh); + } + END_INTERFACE_PROXY(::gaclib_controls::IUnitTestSnapshotFileNode) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::gaclib_controls::IUnitTestSnapshotFrame) + ::vl::WString GetCommandsAsJsonText() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetCommandsAsJsonText); + } + ::vl::WString GetDomAsJsonText() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetDomAsJsonText); + } + ::vl::WString GetElementsAsJsonText() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetElementsAsJsonText); + } + ::vl::WString GetName() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetName); + } + END_INTERFACE_PROXY(::gaclib_controls::IUnitTestSnapshotFrame) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + ::vl::WString WindowTitle() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(WindowTitle); + } + END_INTERFACE_PROXY(::gaclib_controls::IUnitTestSnapshotViewerStringsStrings) + + BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(::gaclib_controls::IUnitTestSnapshotViewerViewModel) + ::vl::Ptr<::gaclib_controls::IUnitTestSnapshotFileNode> GetRootNode() override + { + INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetRootNode); + } + END_INTERFACE_PROXY(::gaclib_controls::IUnitTestSnapshotViewerViewModel) +#endif +#endif + + extern bool LoadGuiUnitTestSnapshotViewerTypes(); + } + } +} + +#if defined( _MSC_VER) +#pragma warning(pop) +#elif defined(__clang__) +#pragma clang diagnostic pop +#elif defined(__GNUC__) +#pragma GCC diagnostic pop +#endif + +#endif + diff --git a/Import/GacUI.UnitTest.cpp b/Import/GacUI.UnitTest.cpp new file mode 100644 index 00000000..594c435c --- /dev/null +++ b/Import/GacUI.UnitTest.cpp @@ -0,0 +1,285 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.UnitTest.h" + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_SHARED.CPP +***********************************************************************/ + +namespace vl::presentation::unittest +{ + using namespace vl::collections; + +/*********************************************************************** +UnitTestScreenConfig +***********************************************************************/ + + void UnitTestScreenConfig::FastInitialize(vint width, vint height, vint taskBarHeight) + { + executablePath = WString::Unmanaged(L"/GacUI/Remote/Protocol/UnitTest.exe"); + customFramePadding = { 8,8,8,8 }; + + fontConfig.defaultFont.fontFamily = WString::Unmanaged(L"GacUI Default Font"); + fontConfig.defaultFont.size = 12; + fontConfig.supportedFonts = Ptr(new List()); + fontConfig.supportedFonts->Add(fontConfig.defaultFont.fontFamily); + + screenConfig.bounds = { 0,0,width,height }; + screenConfig.clientBounds = { 0,0,width,(height - taskBarHeight) }; + screenConfig.scalingX = 1; + screenConfig.scalingY = 1; + } +} + +/*********************************************************************** +.\GUIUNITTESTUTILITIES.CPP +***********************************************************************/ + +namespace vl::presentation::controls +{ + extern bool GACUI_UNITTEST_ONLY_SKIP_THREAD_LOCAL_STORAGE_DISPOSE_STORAGES; + extern bool GACUI_UNITTEST_ONLY_SKIP_TYPE_AND_PLUGIN_LOAD_UNLOAD; +} + +namespace vl::presentation::unittest +{ + const UnitTestFrameworkConfig* globalUnitTestFrameworkConfig = nullptr; + + const UnitTestFrameworkConfig& GetUnitTestFrameworkConfig() + { + CHECK_ERROR(globalUnitTestFrameworkConfig, L"vl::presentation::unittest::GetUnitTestFrameworkConfig()#GacUIUnitTest_Initialize has not been called."); + return *globalUnitTestFrameworkConfig; + } +} + +using namespace vl; +using namespace vl::collections; +using namespace vl::filesystem; +using namespace vl::reflection::description; +using namespace vl::glr::json; +using namespace vl::presentation; +using namespace vl::presentation::remoteprotocol; +using namespace vl::presentation::controls; +using namespace vl::presentation::unittest; + +class UnitTestContextImpl : public Object, public virtual IUnitTestContext +{ + UnitTestRemoteProtocol* protocol = nullptr; + +public: + UnitTestContextImpl(UnitTestRemoteProtocol* _protocol) + : protocol(_protocol) + { + } + + UnitTestRemoteProtocol* GetProtocol() + { + return protocol; + } +}; + +UnitTestMainFunc guiMainProxy; +UnitTestContextImpl* guiMainUnitTestContext = nullptr; + +void GacUIUnitTest_Initialize(const UnitTestFrameworkConfig* config) +{ + CHECK_ERROR(config, L"GacUIUnitTest_Initialize()#Argument config should not be null."); + globalUnitTestFrameworkConfig = config; + + GACUI_UNITTEST_ONLY_SKIP_THREAD_LOCAL_STORAGE_DISPOSE_STORAGES = true; + GACUI_UNITTEST_ONLY_SKIP_TYPE_AND_PLUGIN_LOAD_UNLOAD = true; + + GetGlobalTypeManager()->Load(); + GetPluginManager()->Load(true, false); +} + +void GacUIUnitTest_Finalize() +{ + ResetGlobalTypeManager(); + GetPluginManager()->Unload(true, false); + DestroyPluginManager(); + ThreadLocalStorage::DisposeStorages(); + + GACUI_UNITTEST_ONLY_SKIP_THREAD_LOCAL_STORAGE_DISPOSE_STORAGES = false; + GACUI_UNITTEST_ONLY_SKIP_TYPE_AND_PLUGIN_LOAD_UNLOAD = false; + globalUnitTestFrameworkConfig = nullptr; +} + +void GacUIUnitTest_SetGuiMainProxy(const UnitTestMainFunc& proxy) +{ + guiMainProxy = proxy; +} + +void GacUIUnitTest_LinkGuiMainProxy(const UnitTestLinkFunc& proxy) +{ + auto previousMainProxy = guiMainProxy; + GacUIUnitTest_SetGuiMainProxy([=](UnitTestRemoteProtocol* protocol, IUnitTestContext* context) + { + proxy(protocol, context, previousMainProxy); + }); +} + +File GacUIUnitTest_PrepareSnapshotFile(const WString& appName, const WString& extension) +{ +#define ERROR_MESSAGE_PREFIX L"GacUIUnitTest_PrepareSnapshotFile(const WString&, const WString&)#" + Folder snapshotFolder = GetUnitTestFrameworkConfig().snapshotFolder; + CHECK_ERROR(snapshotFolder.Exists(), ERROR_MESSAGE_PREFIX L"UnitTestFrameworkConfig::snapshotFolder does not point to an existing folder."); + + File snapshotFile = snapshotFolder.GetFilePath() / (appName + extension); + { + auto pathPrefix = snapshotFolder.GetFilePath().GetFullPath() + WString::FromChar(FilePath::Delimiter); + auto snapshotPath = snapshotFile.GetFilePath().GetFullPath(); + CHECK_ERROR( + snapshotPath.Length() > pathPrefix.Length() && snapshotPath.Left(pathPrefix.Length()) == pathPrefix, + ERROR_MESSAGE_PREFIX L"Argument appName should specify a file that is inside UnitTestFrameworkConfig::snapshotFolder" + ); + Folder snapshotFileFolder = snapshotFile.GetFilePath().GetFolder(); + if (!snapshotFileFolder.Exists()) + { + CHECK_ERROR(snapshotFileFolder.Create(true), ERROR_MESSAGE_PREFIX L"Failed to create the folder to contain the snapshot file specified by argument appName."); + } + } + + return snapshotFile; +#undef ERROR_MESSAGE_PREFIX +} + +void GacUIUnitTest_Start(const WString& appName, Nullable config) +{ +#define ERROR_MESSAGE_PREFIX L"GacUIUnitTest_Start(const WString&, Nullable)#" + UnitTestScreenConfig globalConfig; + if (config) + { + globalConfig = config.Value(); + } + else + { + globalConfig.FastInitialize(1024, 768); + } + + UnitTestRemoteProtocol unitTestProtocol(appName, globalConfig); + repeatfiltering::GuiRemoteProtocolFilterVerifier verifierProtocol(unitTestProtocol.GetProtocol()); + repeatfiltering::GuiRemoteProtocolFilter filteredProtocol(&verifierProtocol); + + UnitTestContextImpl unitTestContext(&unitTestProtocol); + guiMainUnitTestContext = &unitTestContext; + SetupRemoteNativeController(&filteredProtocol); + GacUIUnitTest_SetGuiMainProxy({}); + + { + File snapshotFile = GacUIUnitTest_PrepareSnapshotFile(appName, WString::Unmanaged(L".json")); + + JsonFormatting formatting; + formatting.spaceAfterColon = true; + formatting.spaceAfterComma = true; + formatting.crlf = true; + formatting.compact = true; + + auto jsonLog = remoteprotocol::ConvertCustomTypeToJson(unitTestProtocol.GetLoggedTrace()); + auto textLog = JsonToString(jsonLog, formatting); + { + remoteprotocol::RenderingTrace deserialized; + remoteprotocol::ConvertJsonToCustomType(jsonLog, deserialized); + auto jsonLog2 = remoteprotocol::ConvertCustomTypeToJson(deserialized); + auto textLog2 = JsonToString(jsonLog2, formatting); + CHECK_ERROR(textLog == textLog2, ERROR_MESSAGE_PREFIX L"Serialization and deserialization doesn't match."); + } + bool succeeded = snapshotFile.WriteAllText(textLog, false, stream::BomEncoder::Utf8); + CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file."); + } +#undef ERROR_MESSAGE_PREFIX +} + +void GacUIUnitTest_Start_WithResourceAsText(const WString& appName, Nullable config, const WString& resourceText) +{ +#define ERROR_MESSAGE_PREFIX L"GacUIUnitTest_Start_WithResourceAsText(const WString&, Nullable, const WString&)#" + auto previousMainProxy = guiMainProxy; + GacUIUnitTest_LinkGuiMainProxy([=](UnitTestRemoteProtocol* protocol, IUnitTestContext* context, const UnitTestMainFunc& previousMainProxy) + { + auto resource = GacUIUnitTest_CompileAndLoad(resourceText); + { + auto workflow = resource->GetStringByPath(L"UnitTest/Workflow"); + File snapshotFile = GacUIUnitTest_PrepareSnapshotFile( + appName, +#ifdef VCZH_64 + WString::Unmanaged(L"[x64].txt") +#else + WString::Unmanaged(L"[x86].txt") +#endif + ); + bool succeeded = snapshotFile.WriteAllText(workflow, false, stream::BomEncoder::Utf8); + CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file."); + } + previousMainProxy(protocol, context); + }); + GacUIUnitTest_Start(appName, config); +#undef ERROR_MESSAGE_PREFIX +} + +Ptr GacUIUnitTest_CompileAndLoad(const WString& xmlResource) +{ +#define ERROR_MESSAGE_PREFIX L"GacUIUnitTest_CompileAndLoad(const WString&)#" + Ptr resource; + GuiResourceError::List errors; + { + auto resourcePath = (GetUnitTestFrameworkConfig().resourceFolder / L"Resource.xml").GetFullPath(); + auto resourceFolder = GetUnitTestFrameworkConfig().resourceFolder.GetFullPath(); + auto parser = GetParserManager()->GetParser(L"XML"); + auto xml = parser->Parse({ WString::Empty,resourcePath }, xmlResource, errors); + CHECK_ERROR(xml && errors.Count() == 0, ERROR_MESSAGE_PREFIX L"Failed to parse XML resource."); + + resource = GuiResource::LoadFromXml(xml, resourcePath, resourceFolder, errors); + CHECK_ERROR(resource && errors.Count() == 0, ERROR_MESSAGE_PREFIX L"Failed to load XML resource."); + } + + auto precompiledFolder = resource->Precompile( +#ifdef VCZH_64 + GuiResourceCpuArchitecture::x64, +#else + GuiResourceCpuArchitecture::x86, +#endif + nullptr, + errors + ); + CHECK_ERROR(precompiledFolder && errors.Count() == 0, ERROR_MESSAGE_PREFIX L"Failed to precompile XML resource."); + + auto compiledWorkflow = precompiledFolder->GetValueByPath(WString::Unmanaged(L"Workflow/InstanceClass")).Cast(); + CHECK_ERROR(compiledWorkflow, ERROR_MESSAGE_PREFIX L"Failed to compile generated Workflow script."); + CHECK_ERROR(compiledWorkflow->assembly, ERROR_MESSAGE_PREFIX L"Failed to load Workflow assembly."); + + { + WString text; + auto& codes = compiledWorkflow->assembly->insAfterCodegen->moduleCodes; + for (auto [code, codeIndex] : indexed(codes)) + { + text += L"================================(" + itow(codeIndex + 1) + L"/" + itow(codes.Count()) + L")================================\r\n"; + text += code + L"\r\n"; + } + resource->CreateValueByPath( + WString::Unmanaged(L"UnitTest/Workflow"), + WString::Unmanaged(L"Text"), + Ptr(new GuiTextData(text)) + ); + } + + GetResourceManager()->SetResource(resource, errors, GuiResourceUsage::InstanceClass); + CHECK_ERROR(errors.Count() == 0, ERROR_MESSAGE_PREFIX L"Failed to load compiled XML resource."); + + return resource; +#undef ERROR_MESSAGE_PREFIX +} + +void GuiMain() +{ + if (guiMainUnitTestContext) + { + guiMainProxy(guiMainUnitTestContext->GetProtocol(), guiMainUnitTestContext); + } + else + { + guiMainProxy(nullptr, nullptr); + } + guiMainUnitTestContext = nullptr; +} diff --git a/Import/GacUI.UnitTest.h b/Import/GacUI.UnitTest.h new file mode 100644 index 00000000..2376d863 --- /dev/null +++ b/Import/GacUI.UnitTest.h @@ -0,0 +1,1444 @@ +/*********************************************************************** +THIS FILE IS AUTOMATICALLY GENERATED. DO NOT MODIFY +DEVELOPER: Zihan Chen(vczh) +***********************************************************************/ +#include "GacUI.h" +#include "VlppGlrParser.h" +#include "VlppWorkflowLibrary.h" +#include "VlppReflection.h" +#include "VlppOS.h" +#include "Vlpp.h" +#include "VlppRegex.h" +#include "GacUIReflection.h" +#include "VlppWorkflowCompiler.h" +#include "VlppWorkflowRuntime.h" + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_SHARED.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_SHARED +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_SHARED + + +namespace vl::presentation::unittest +{ + struct WindowStyleConfig + { + WString title; + bool enabled = true; + bool topMost = false; + bool showInTaskBar = true; + + bool customFrameMode = false; + bool maximizedBox = true; + bool minimizedBox = true; + bool border = true; + bool sizeBox = true; + bool iconVisible = true; + bool titleBar = true; + bool activated = false; + + auto operator<=>(const WindowStyleConfig&) const = default; + }; + + struct UnitTestScreenConfig + { + using FontConfig = vl::presentation::remoteprotocol::FontConfig; + using ScreenConfig = vl::presentation::remoteprotocol::ScreenConfig; + + WString executablePath; + NativeMargin customFramePadding; + FontConfig fontConfig; + ScreenConfig screenConfig; + + void FastInitialize(vint width, vint height, vint taskBarHeight = 0); + }; + + class UnitTestRemoteProtocolBase : public Object, protected virtual IGuiRemoteProtocol + { + protected: + IGuiRemoteProtocolEvents* events = nullptr; + UnitTestScreenConfig globalConfig; + + public: + UnitTestRemoteProtocolBase(UnitTestScreenConfig _globalConfig) + : globalConfig(_globalConfig) + { + } + + IGuiRemoteProtocol* GetProtocol() + { + return this; + } + + IGuiRemoteProtocolEvents* GetEvents() const + { + return events; + } + + const UnitTestScreenConfig& GetGlobalConfig() const + { + return globalConfig; + } + + protected: + +/*********************************************************************** +IGuiRemoteProtocol +***********************************************************************/ + + void Initialize(IGuiRemoteProtocolEvents* _events) override + { + events = _events; + } + + WString GetExecutablePath() override + { + return globalConfig.executablePath; + } + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_IO.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_IO +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_IO + + +namespace vl::presentation::unittest +{ + template + class UnitTestRemoteProtocol_IO : public TProtocol + { + using GlobalShortcutKey = remoteprotocol::GlobalShortcutKey; + using GlobalShortcutKeyList = collections::List; + public: + bool capturing = false; + GlobalShortcutKeyList globalShortcutKeys; + + template + UnitTestRemoteProtocol_IO(TArgs&& ...args) + : TProtocol(std::forward(args)...) + { + } + + protected: + +/*********************************************************************** +IGuiRemoteProtocolMessages (IO) +***********************************************************************/ + + void RequestIOUpdateGlobalShortcutKey(const Ptr& arguments) override + { + if (arguments) + { + CopyFrom(globalShortcutKeys, *arguments.Obj()); + } + else + { + globalShortcutKeys.Clear(); + } + } + + void RequestIORequireCapture() override + { + capturing = true; + } + + void RequestIOReleaseCapture() override + { + capturing = false; + } + + void RequestIOIsKeyPressing(vint id, const VKEY& arguments) override + { + CHECK_FAIL(L"Not Implemented!"); + } + + void RequestIOIsKeyToggled(vint id, const VKEY& arguments) override + { + CHECK_FAIL(L"Not Implemented!"); + } + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_IOCOMMANDS.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_IOCOMMANDS +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_IOCOMMANDS + + +namespace vl::presentation::unittest +{ + +/*********************************************************************** +UnitTestRemoteProtocol +***********************************************************************/ + + template + class UnitTestRemoteProtocol_IOCommands : public TProtocol + { + protected: + Nullable mousePosition; + collections::SortedList pressingKeys; + bool leftPressing = false; + bool middlePressing = false; + bool rightPressing = false; + bool capslockToggled = false; + + IGuiRemoteProtocolEvents& UseEvents() + { + return *this->GetEvents(); + } + + bool IsPressing(VKEY key) + { + return pressingKeys.Contains(key); + } + + NativeWindowMouseInfo MakeMouseInfo() + { + NativeWindowMouseInfo info; + info.ctrl = IsPressing(VKEY::KEY_CONTROL) || IsPressing(VKEY::KEY_LCONTROL) || IsPressing(VKEY::KEY_RCONTROL); + info.shift = IsPressing(VKEY::KEY_SHIFT) || IsPressing(VKEY::KEY_LSHIFT) || IsPressing(VKEY::KEY_RSHIFT); + info.left = leftPressing; + info.middle = middlePressing; + info.right = rightPressing; + info.x = mousePosition.Value().x.value; + info.y = mousePosition.Value().y.value; + info.wheel = 0; + info.nonClient = false; + return info; + } + + NativeWindowKeyInfo MakeKeyInfo(VKEY key, bool autoRepeatKeyDown = false) + { + NativeWindowKeyInfo info; + info.code = key; + info.ctrl = IsPressing(VKEY::KEY_CONTROL) || IsPressing(VKEY::KEY_LCONTROL) || IsPressing(VKEY::KEY_RCONTROL); + info.shift = IsPressing(VKEY::KEY_SHIFT) || IsPressing(VKEY::KEY_LSHIFT) || IsPressing(VKEY::KEY_RSHIFT); + info.alt = IsPressing(VKEY::KEY_MENU) || IsPressing(VKEY::KEY_LMENU) || IsPressing(VKEY::KEY_RMENU); + info.capslock = capslockToggled; + info.autoRepeatKeyDown = autoRepeatKeyDown; + return info; + } + + public: + + template + UnitTestRemoteProtocol_IOCommands(TArgs&& ...args) + : TProtocol(std::forward(args)...) + { + } + +/*********************************************************************** +Helper Functions +***********************************************************************/ + + NativePoint LocationOf(compositions::GuiGraphicsComposition* composition, double ratioX = 0.5, double ratioY = 0.5, vint offsetX = 0, vint offsetY = 0) + { + INativeWindow* nativeWindow = composition->GetRelatedControlHost()->GetNativeWindow(); + Rect bounds = composition->GetGlobalBounds(); + NativeRect nativeBounds = { nativeWindow->Convert(bounds.LeftTop()),nativeWindow->Convert(bounds.GetSize()) }; + vint x = nativeBounds.x1.value + (vint)(nativeBounds.Width().value * ratioX) + offsetX; + vint y = nativeBounds.y1.value + (vint)(nativeBounds.Height().value * ratioY) + offsetY; + NativePoint windowLocation = nativeWindow->GetBounds().LeftTop(); + return { windowLocation.x.value + x,windowLocation.y.value + y }; + } + + NativePoint LocationOf(controls::GuiControl* control, double ratioX = 0.5, double ratioY = 0.5, vint offsetX = 0, vint offsetY = 0) + { + return LocationOf(control->GetBoundsComposition(), ratioX, ratioY, offsetX, offsetY); + } + +#define CLASS_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_IOCommands::" + +/*********************************************************************** +Keys +***********************************************************************/ + + void _KeyDown(VKEY key) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_KeyDown(...)#" + CHECK_ERROR(!pressingKeys.Contains(key), ERROR_MESSAGE_PREFIX L"The key is already being pressed."); + pressingKeys.Add(key); + if (key == VKEY::KEY_CAPITAL) + { + capslockToggled = !capslockToggled; + } + UseEvents().OnIOKeyDown(MakeKeyInfo(key, false)); +#undef ERROR_MESSAGE_PREFIX + } + + void _KeyDownRepeat(VKEY key) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_KeyDownRepeat(...)#" + CHECK_ERROR(pressingKeys.Contains(key), ERROR_MESSAGE_PREFIX L"The key is not being pressed."); + UseEvents().OnIOKeyDown(MakeKeyInfo(key, true)); +#undef ERROR_MESSAGE_PREFIX + } + + void _KeyUp(VKEY key) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_KeyUp(...)#" + CHECK_ERROR(pressingKeys.Contains(key), ERROR_MESSAGE_PREFIX L"The key is not being pressed."); + pressingKeys.Remove(key); + UseEvents().OnIOKeyUp(MakeKeyInfo(key, false)); +#undef ERROR_MESSAGE_PREFIX + } + + void KeyPress(VKEY key) + { + _KeyDown(key); + _KeyUp(key); + } + + void KeyPress(VKEY key, bool ctrl, bool shift, bool alt) + { + if (ctrl) _KeyDown(VKEY::KEY_CONTROL); + if (shift) _KeyDown(VKEY::KEY_SHIFT); + if (alt) _KeyDown(VKEY::KEY_MENU); + KeyPress(key); + if (alt) _KeyUp(VKEY::KEY_MENU); + if (shift) _KeyUp(VKEY::KEY_SHIFT); + if (ctrl) _KeyUp(VKEY::KEY_CONTROL); + } + +/*********************************************************************** +Mouse +***********************************************************************/ + + void MouseMove(NativePoint position) + { + if (!mousePosition) + { + UseEvents().OnIOMouseEntered(); + goto DO_MOUSE_MOVE; + } + + if (mousePosition.Value() == position) return; + DO_MOUSE_MOVE: + + mousePosition = position; + UseEvents().OnIOMouseMoving(MakeMouseInfo()); + } + +/*********************************************************************** +Mouse (Left) +***********************************************************************/ + + void _LDown(Nullable position = {}) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LDown(...)#" + if (position) MouseMove(position.Value()); + CHECK_ERROR(!leftPressing, ERROR_MESSAGE_PREFIX L"The button should not be being pressed."); + leftPressing = true; + UseEvents().OnIOButtonDown({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() }); +#undef ERROR_MESSAGE_PREFIX + } + + void _LUp(Nullable position = {}) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LUp(...)#" + if (position) MouseMove(position.Value()); + CHECK_ERROR(leftPressing, ERROR_MESSAGE_PREFIX L"The button should be being pressed."); + leftPressing = false; + UseEvents().OnIOButtonUp({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() }); +#undef ERROR_MESSAGE_PREFIX + } + + void _LDBClick(Nullable position = {}) + { +#define ERROR_MESSAGE_PREFIX CLASS_PREFIX L"_LDBClick(...)#" + if (position) MouseMove(position.Value()); + CHECK_ERROR(!leftPressing, ERROR_MESSAGE_PREFIX L"The button should not be being pressed."); + leftPressing = true; + UseEvents().OnIOButtonDoubleClick({ remoteprotocol::IOMouseButton::Left,MakeMouseInfo() }); +#undef ERROR_MESSAGE_PREFIX + } + + void LClick(Nullable position = {}) + { + _LDown(position); + _LUp(position); + } + + void LDBClick(Nullable position = {}) + { + _LDown(position); + _LUp(position); + _LDBClick(position); + _LUp(position); + } + +#undef CLASS_PREFIX + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_MAINWINDOW.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_MAINWINDOW +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_MAINWINDOW + + +namespace vl::presentation::unittest +{ + template + class UnitTestRemoteProtocol_MainWindow : public TProtocol + { + using WindowSizingConfig = remoteprotocol::WindowSizingConfig; + using WindowShowing = remoteprotocol::WindowShowing; + public: + WindowSizingConfig sizingConfig; + WindowStyleConfig styleConfig; + NativeRect lastRestoredSize; + + template + UnitTestRemoteProtocol_MainWindow(TArgs&& ...args) + : TProtocol(std::forward(args)...) + { + sizingConfig.bounds = { 0,0,0,0 }; + sizingConfig.clientBounds = { 0,0,0,0 }; + sizingConfig.customFramePadding = this->GetGlobalConfig().customFramePadding; + sizingConfig.sizeState = INativeWindow::Restored; + } + + protected: + +/*********************************************************************** +IGuiRemoteProtocolMessages (Controller) +***********************************************************************/ + + void RequestControllerGetFontConfig(vint id) override + { + this->GetEvents()->RespondControllerGetFontConfig(id, this->GetGlobalConfig().fontConfig); + } + + void RequestControllerGetScreenConfig(vint id) override + { + this->GetEvents()->RespondControllerGetScreenConfig(id, this->GetGlobalConfig().screenConfig); + } + +/*********************************************************************** +IGuiRemoteProtocolMessages (Window) +***********************************************************************/ + + void RequestWindowGetBounds(vint id) override + { + this->GetEvents()->RespondWindowGetBounds(id, sizingConfig); + } + + void RequestWindowNotifySetTitle(const ::vl::WString& arguments) override + { + styleConfig.title = arguments; + } + + void RequestWindowNotifySetEnabled(const bool& arguments) override + { + styleConfig.enabled = arguments; + } + + void RequestWindowNotifySetTopMost(const bool& arguments) override + { + styleConfig.topMost = arguments; + } + + void RequestWindowNotifySetShowInTaskBar(const bool& arguments) override + { + styleConfig.showInTaskBar = arguments; + } + + void OnBoundsUpdated() + { + sizingConfig.clientBounds = sizingConfig.bounds; + if (sizingConfig.sizeState == INativeWindow::Restored) + { + lastRestoredSize = sizingConfig.bounds; + } + this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); + } + + void RequestWindowNotifySetBounds(const NativeRect& arguments) override + { + sizingConfig.bounds = arguments; + OnBoundsUpdated(); + } + + void RequestWindowNotifySetClientSize(const NativeSize& arguments) override + { + sizingConfig.bounds = { sizingConfig.bounds.LeftTop(), arguments }; + OnBoundsUpdated(); + } + + void RequestWindowNotifySetCustomFrameMode(const bool& arguments) override { styleConfig.customFrameMode = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetMaximizedBox(const bool& arguments) override { styleConfig.maximizedBox = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetMinimizedBox(const bool& arguments) override { styleConfig.minimizedBox = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetBorder(const bool& arguments) override { styleConfig.border = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetSizeBox(const bool& arguments) override { styleConfig.sizeBox = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetIconVisible(const bool& arguments) override { styleConfig.iconVisible = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifySetTitleBar(const bool& arguments) override { styleConfig.titleBar = arguments; this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); } + void RequestWindowNotifyActivate() override { styleConfig.activated = true; } + + void RequestWindowNotifyShow(const WindowShowing& arguments) override + { + styleConfig.activated = arguments.activate; + if (sizingConfig.sizeState != arguments.sizeState) + { + sizingConfig.sizeState = arguments.sizeState; + switch (arguments.sizeState) + { + case INativeWindow::Maximized: + sizingConfig.bounds = this->GetGlobalConfig().screenConfig.clientBounds; + OnBoundsUpdated(); + break; + case INativeWindow::Minimized: + sizingConfig.bounds = NativeRect( + { + this->GetGlobalConfig().screenConfig.bounds.x2, + this->GetGlobalConfig().screenConfig.bounds.y2 + }, + { 1,1 } + ); + OnBoundsUpdated(); + break; + case INativeWindow::Restored: + if (sizingConfig.bounds != lastRestoredSize) + { + sizingConfig.bounds = lastRestoredSize; + OnBoundsUpdated(); + } + else + { + this->GetEvents()->OnWindowBoundsUpdated(sizingConfig); + } + break; + } + } + } + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_RENDERING.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_RENDERING +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_RENDERING + + +namespace vl::presentation::unittest +{ + +/*********************************************************************** +UnitTestRemoteProtocol +***********************************************************************/ + + using ElementDescVariant = remoteprotocol::ElementDescVariant; + using UnitTestRenderingCommand = remoteprotocol::RenderingCommand; + using UnitTestRenderingCommandList = collections::List; + using UnitTestRenderingCommandListRef = Ptr; + using UnitTestRenderingDom = remoteprotocol::RenderingDom; + + template + class UnitTestRemoteProtocol_Rendering : public TProtocol + { + using IdSet = collections::SortedList; + using ElementDescMap = collections::Dictionary; + using ImageMetadataMap = collections::Dictionary; + using CommandList = UnitTestRenderingCommandList; + using CommandListRef = UnitTestRenderingCommandListRef; + protected: + + remoteprotocol::RenderingTrace loggedTrace; + ElementDescMap lastElementDescs; + IdSet removedElementIds; + IdSet removedImageIds; + + remoteprotocol::ElementMeasurings measuringForNextRendering; + regex::Regex regexCrLf{ L"/n|/r(/n)?" }; + vint lastFrameId = 0; + CommandListRef lastRenderingCommands; + + void ResetCreatedObjects() + { + loggedTrace.createdElements = Ptr(new collections::Dictionary); + loggedTrace.createdImages = Ptr(new remoteprotocol::ArrayMap); + lastElementDescs.Clear(); + } + public: + + template + UnitTestRemoteProtocol_Rendering(TArgs&& ...args) + : TProtocol(std::forward(args)...) + { + ResetCreatedObjects(); + loggedTrace.frames = Ptr(new collections::List); + } + + protected: + +/*********************************************************************** +IGuiRemoteProtocolMessages (Rendering) +***********************************************************************/ + + void RequestRendererBeginRendering(const remoteprotocol::ElementBeginRendering& arguments) override + { + lastFrameId = arguments.frameId; + lastRenderingCommands = Ptr(new CommandList); + } + + void RequestRendererEndRendering(vint id) override + { + this->GetEvents()->RespondRendererEndRendering(id, measuringForNextRendering); + measuringForNextRendering = {}; + } + + void RequestRendererBeginBoundary(const remoteprotocol::ElementBoundary& arguments) override + { + lastRenderingCommands->Add(remoteprotocol::RenderingCommand_BeginBoundary{ arguments }); + } + + void RequestRendererEndBoundary() override + { + lastRenderingCommands->Add(remoteprotocol::RenderingCommand_EndBoundary{}); + } + + template + void RequestRendererRenderElement(const remoteprotocol::ElementRendering& rendering, const T& element) + { + lastRenderingCommands->Add(remoteprotocol::RenderingCommand_Element{ rendering,element.id }); + } + + void RequestRendererRenderElement(const remoteprotocol::ElementRendering& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Rendering::RequestRendererRenderElement(const ElementRendering&)#" + vint index = loggedTrace.createdElements->Keys().IndexOf(arguments.id); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been created."); + + auto rendererType = loggedTrace.createdElements->Values()[index]; + if (rendererType == remoteprotocol::RendererType::FocusRectangle) + { + // FocusRectangle does not has a ElementDesc + lastRenderingCommands->Add(remoteprotocol::RenderingCommand_Element{ arguments,arguments.id }); + return; + } + + index = lastElementDescs.Keys().IndexOf(arguments.id); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been updated after created."); + lastElementDescs.Values()[index].Apply(Overloading( + [](remoteprotocol::RendererType) + { + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been updated after created."); + }, + [&](const remoteprotocol::ElementDesc_SolidLabel& solidLabel) + { + CalculateSolidLabelSizeIfNecessary(arguments.bounds.Width(), arguments.bounds.Height(), solidLabel); + RequestRendererRenderElement(arguments, solidLabel); + }, + [&](const auto& element) + { + RequestRendererRenderElement(arguments, element); + })); +#undef ERROR_MESSAGE_PREFIX + } + +/*********************************************************************** +IGuiRemoteProtocolMessages (Elements) +***********************************************************************/ + + void RequestRendererCreated(const Ptr>& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Rendering::RequestRendererCreated(const Ptr>&)#" + if (arguments) + { + for (auto creation : *arguments.Obj()) + { + CHECK_ERROR(!loggedTrace.createdElements->Keys().Contains(creation.id), ERROR_MESSAGE_PREFIX L"Renderer with the specified id has been created or used."); + loggedTrace.createdElements->Add(creation.id, creation.type); + removedElementIds.Remove(creation.id); + } + } +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererDestroyed(const Ptr>& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Rendering::RequestRendererDestroyed(const Ptr>&)#" + if (arguments) + { + for (auto id : *arguments.Obj()) + { + CHECK_ERROR(loggedTrace.createdElements->Keys().Contains(id), ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been created."); + CHECK_ERROR(!removedElementIds.Contains(id), ERROR_MESSAGE_PREFIX L"Renderer with the specified id has been destroyed."); + removedElementIds.Add(id); + lastElementDescs.Remove(id); + } + } +#undef ERROR_MESSAGE_PREFIX + } + + template + void RequestRendererUpdateElement(const TElementDesc& arguments, const wchar_t* emWrongId, const wchar_t* emWrongType) + { + vint index = loggedTrace.createdElements->Keys().IndexOf(arguments.id); + CHECK_ERROR(index != -1, emWrongId); + CHECK_ERROR(loggedTrace.createdElements->Values()[index] == RendererType, emWrongType); + lastElementDescs.Set(arguments.id, arguments); + } + +#define REQUEST_RENDERER_UPDATE_ELEMENT2(ARGUMENTS, RENDERER_TYPE)\ + RequestRendererUpdateElement(\ + ARGUMENTS,\ + ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been created.",\ + ERROR_MESSAGE_PREFIX L"Renderer with the specified id is not of the expected type."\ + ) + +#define REQUEST_RENDERER_UPDATE_ELEMENT(RENDERER_TYPE) REQUEST_RENDERER_UPDATE_ELEMENT2(arguments, RENDERER_TYPE) + + void RequestRendererUpdateElement_SolidBorder(const remoteprotocol::ElementDesc_SolidBorder& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SolidBorder::RequestRendererCreated(const ElementDesc_SolidBorder&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::SolidBorder); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_SinkBorder(const remoteprotocol::ElementDesc_SinkBorder& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SinkBorder::RequestRendererCreated(const ElementDesc_SinkBorder&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::SinkBorder); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_SinkSplitter(const remoteprotocol::ElementDesc_SinkSplitter& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SinkSplitter::RequestRendererCreated(const ElementDesc_SinkSplitter&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::SinkSplitter); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_SolidBackground(const remoteprotocol::ElementDesc_SolidBackground& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SolidBackground::RequestRendererCreated(const ElementDesc_SolidBackground&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::SolidBackground); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_GradientBackground(const remoteprotocol::ElementDesc_GradientBackground& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_GradientBackground::RequestRendererCreated(const ElementDesc_GradientBackground&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::GradientBackground); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_InnerShadow(const remoteprotocol::ElementDesc_InnerShadow& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_InnerShadow::RequestRendererCreated(const ElementDesc_InnerShadow&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::InnerShadow); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_Polygon(const remoteprotocol::ElementDesc_Polygon& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_Polygon::RequestRendererCreated(const ElementDesc_Polygon&)#" + REQUEST_RENDERER_UPDATE_ELEMENT(remoteprotocol::RendererType::Polygon); +#undef ERROR_MESSAGE_PREFIX + } + +/*********************************************************************** +IGuiRemoteProtocolMessages (Elements - SolidLabel) +***********************************************************************/ + + void CalculateSolidLabelSizeIfNecessary(vint width, vint height, const remoteprotocol::ElementDesc_SolidLabel& arguments) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SolidLabel::CalculateSolidLabelSizeIfNecessary(vint, vint, const ElementDesc_SolidLabel&)#" + + if (arguments.measuringRequest) + { + switch (arguments.measuringRequest.Value()) + { + case remoteprotocol::ElementSolidLabelMeasuringRequest::FontHeight: + CHECK_ERROR(arguments.font, ERROR_MESSAGE_PREFIX L"Font is missing for calculating font height."); + if (!measuringForNextRendering.fontHeights) + { + measuringForNextRendering.fontHeights = Ptr(new collections::List); + } + { + remoteprotocol::ElementMeasuring_FontHeight measuring; + measuring.fontFamily = arguments.font.Value().fontFamily; + measuring.fontSize = arguments.font.Value().size; + measuring.height = measuring.fontSize; + measuringForNextRendering.fontHeights->Add(measuring); + } + break; + case remoteprotocol::ElementSolidLabelMeasuringRequest::TotalSize: + { + // font and text has already been verified exist in RequestRendererUpdateElement_SolidLabel + vint size = arguments.font.Value().size; + auto text = arguments.text.Value(); + vint textWidth = 0; + vint textHeight = 0; + + collections::List lines; + { + collections::List> matches; + regexCrLf.Split(text, true, matches); + + if (matches.Count() == 0) + { + // when there is no text, measure a space + lines.Add(1); + } + else + { + auto normalizedLines = + From(matches) + .Select([](auto&& match) { return match->Result().Length(); }) + .Select([](vint length) { return length ? length : 1; }) + ; + if (arguments.multiline) + { + // calculate text as multiple lines + CopyFrom( + lines, + normalizedLines + ); + } + else + { + // calculate text as single line, insert a space between each line + lines.Add( + normalizedLines + .template Aggregate(-1, [](auto a, auto b) { return a + b + 1; }) + ); + } + } + } + + if (arguments.wrapLine) + { + // width of the text is 0 + // insert a line break when there is no space horizontally + textHeight = size * From(lines) + .Select([columns = width / size](vint length) + { + if (columns == 0) + { + return length; + } + else + { + return (length + columns - 1) / columns; + } + }) + .template Aggregate(0, [](auto a, auto b) { return a + b; }); + } + else + { + // width of the text is width of the longest line + textWidth = size * From(lines).Max(); + textHeight = size * lines.Count(); + } + + if (!measuringForNextRendering.minSizes) + { + measuringForNextRendering.minSizes = Ptr(new collections::List); + } + { + remoteprotocol::ElementMeasuring_ElementMinSize measuring; + measuring.id = arguments.id; + measuring.minSize = { textWidth,textHeight }; + measuringForNextRendering.minSizes->Add(measuring); + } + } + break; + default: + CHECK_FAIL(L"Unknown value of ElementSolidLabelMeasuringRequest."); + } + } +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_SolidLabel(const remoteprotocol::ElementDesc_SolidLabel& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_SolidLabel::RequestRendererCreated(const ElementDesc_SolidLabel&)#" + auto element = arguments; + if (!element.font || !element.text) + { + vint index = loggedTrace.createdElements->Keys().IndexOf(element.id); + CHECK_ERROR(index != -1, ERROR_MESSAGE_PREFIX L"Renderer with the specified id has not been created."); + + auto rendererType = loggedTrace.createdElements->Values()[index]; + CHECK_ERROR(rendererType == remoteprotocol::RendererType::SolidLabel, ERROR_MESSAGE_PREFIX L"Renderer with the specified id is not of the expected type."); + + index = lastElementDescs.Keys().IndexOf(arguments.id); + if (index != -1) + { + auto solidLabel = lastElementDescs.Values()[index].TryGet(); + CHECK_ERROR(solidLabel, ERROR_MESSAGE_PREFIX L"Renderer with the specified id is not of the expected type."); + if (!element.font) element.font = solidLabel->font; + if (!element.text) element.text = solidLabel->text; + } + else + { + if (!element.font) element.font = FontProperties(); + if (!element.text) element.text = WString::Empty; + } + } + REQUEST_RENDERER_UPDATE_ELEMENT2(element, remoteprotocol::RendererType::SolidLabel); +#undef ERROR_MESSAGE_PREFIX + } + +/*********************************************************************** +IGuiRemoteProtocolMessages (Elements - Image) +***********************************************************************/ + + remoteprotocol::ImageMetadata MakeImageMetadata(const remoteprotocol::ImageCreation& arguments) + { + CHECK_FAIL(L"Not Implemented!"); + } + + void RequestImageCreated(vint id, const remoteprotocol::ImageCreation& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Rendering::RequestImageCreated(vint, const vint&)#" + CHECK_ERROR(!loggedTrace.createdImages->Keys().Contains(arguments.id), ERROR_MESSAGE_PREFIX L"Image with the specified id has been created or used."); + removedImageIds.Remove(arguments.id); + this->GetEvents()->RespondImageCreated(id, MakeImageMetadata(arguments)); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestImageDestroyed(const vint& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Rendering::RequestImageDestroyed(const vint&)#" + CHECK_ERROR(loggedTrace.createdImages->Keys().Contains(arguments), ERROR_MESSAGE_PREFIX L"Image with the specified id has not been created."); + CHECK_ERROR(!removedImageIds.Contains(arguments), ERROR_MESSAGE_PREFIX L"Image with the specified id has been destroyed."); + removedImageIds.Add(arguments); +#undef ERROR_MESSAGE_PREFIX + } + + void RequestRendererUpdateElement_ImageFrame(const remoteprotocol::ElementDesc_ImageFrame& arguments) override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::RequestRendererUpdateElement_ImageFrame::RequestRendererCreated(const ElementDesc_ImageFrame&)#" + if (arguments.imageCreation) + { + auto&& imageCreation = arguments.imageCreation.Value(); + if (!imageCreation.imageDataOmitted) + { + CHECK_ERROR(arguments.imageId && arguments.imageId.Value() != !imageCreation.id, ERROR_MESSAGE_PREFIX L"It should satisfy that (arguments.imageId.Value()id == imageCreation.id)."); + CHECK_ERROR(!loggedTrace.createdImages->Keys().Contains(imageCreation.id), ERROR_MESSAGE_PREFIX L"Image with the specified id has been created."); + CHECK_ERROR(imageCreation.imageData, ERROR_MESSAGE_PREFIX L"When imageDataOmitted == false, imageData should not be null."); + if (!measuringForNextRendering.createdImages) + { + measuringForNextRendering.createdImages = Ptr(new collections::List); + } + measuringForNextRendering.createdImages->Add(MakeImageMetadata(imageCreation)); + } + else + { + CHECK_ERROR(!imageCreation.imageData, ERROR_MESSAGE_PREFIX L"When imageDataOmitted == true, imageData should be null."); + } + } + else if (arguments.imageId) + { + CHECK_ERROR(loggedTrace.createdImages->Keys().Contains(arguments.imageId.Value()), ERROR_MESSAGE_PREFIX L"Image with the specified id has not been created."); + } + + auto element = arguments; + element.imageCreation.Reset(); + REQUEST_RENDERER_UPDATE_ELEMENT2(element, remoteprotocol::RendererType::ImageFrame); +#undef ERROR_MESSAGE_PREFIX + } + +#undef REQUEST_RENDERER_UPDATE_ELEMENT +#undef REQUEST_RENDERER_UPDATE_ELEMENT2 + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL_LOGGING.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_LOGGING +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL_LOGGING + + +namespace vl::presentation::unittest +{ + +/*********************************************************************** +UnitTestRemoteProtocol +***********************************************************************/ + + template + class UnitTestRemoteProtocol_Logging : public TProtocol + { + using CommandList = UnitTestRenderingCommandList; + using CommandListRef = UnitTestRenderingCommandListRef; + using RenderingResultRef = Ptr; + using RenderingResultRefList = collections::List; + using LoggedFrameList = collections::List; + protected: + + bool everRendered = false; + vint candidateFrameId = 0; + CommandListRef candidateRenderingResult; + + RenderingResultRef TransformLastRenderingResult(CommandListRef commandListRef) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol_Logging::TransformLastRenderingResult(CommandListRef)#" + + RenderingResultRefList domStack; + collections::List domBoundaries; + + auto domRoot = Ptr(new UnitTestRenderingDom); + auto domCurrent = domRoot; + domStack.Add(domRoot); + + auto getCurrentBoundary = [&]() -> vint + { + if (domBoundaries.Count() > 0) + { + return domBoundaries[domBoundaries.Count() - 1]; + } + else + { + return 0; + } + }; + + auto push = [&](RenderingResultRef ref) + { + CHECK_ERROR(ref, ERROR_MESSAGE_PREFIX L"[push] Cannot push a null dom object."); + vint index = domStack.Add(ref); + if (!domCurrent->children) domCurrent->children = Ptr(new RenderingResultRefList); + domCurrent->children->Add(ref); + domCurrent = ref; + return index; + }; + + auto popTo = [&](vint index) + { + if (index == domStack.Count() - 1) return; + CHECK_ERROR(0 <= index && index < domStack.Count(), ERROR_MESSAGE_PREFIX L"[popTo] Cannot pop to an invalid position."); + CHECK_ERROR(index >= getCurrentBoundary(), ERROR_MESSAGE_PREFIX L"[popTo] Cannot pop across a boundary."); + while (domStack.Count() - 1 > index) + { + domStack.RemoveAt(domStack.Count() - 1); + } + domCurrent = domStack[index]; + }; + + auto pop = [&]() + { + popTo(domStack.Count() - 2); + }; + + auto popBoundary = [&]() + { + CHECK_ERROR(domBoundaries.Count() > 0, ERROR_MESSAGE_PREFIX L"[popBoundary] Cannot pop a boundary when none is in the stack."); + auto boundaryIndex = domBoundaries.Count() - 1; + auto boundary = domBoundaries[boundaryIndex]; + domBoundaries.RemoveAt(boundaryIndex); + popTo(boundary - 1); + }; + + auto prepareParentFromCommand = [&]( + Rect commandBounds, + Rect commandValidArea, + auto&& calculateValidAreaFromDom + ) + { + vint min = getCurrentBoundary(); + bool found = false; + if (commandValidArea.Contains(commandBounds)) + { + // if the command is not clipped + for (vint i = domStack.Count() - 1; i >= min; i--) + { + if (domStack[i]->validArea.Contains(commandBounds) || i == 0) + { + // find the deepest node that could contain the command + popTo(i); + found = true; + break; + } + } + } + else + { + // otherwise, a parent node causing such clipping should be found or created + for (vint i = domStack.Count() - 1; i >= min; i--) + { + auto domValidArea = calculateValidAreaFromDom(domStack[i]); + if (domValidArea == commandValidArea) + { + // if there is a node who clips command's bound to its valid area + // that is the parent node of the command + popTo(i); + found = true; + break; + } + else if (domValidArea.Contains(commandValidArea) || i == 0) + { + // otherwise find a deepest node who could visually contain the command + // create a virtual node to satisfy the clipper + popTo(i); + auto parent = Ptr(new UnitTestRenderingDom); + parent->bounds = commandValidArea; + parent->validArea = commandValidArea; + push(parent); + found = true; + break; + } + } + } + + // if the new boundary could not fit in the current boundary + // there must be something wrong + CHECK_ERROR(found, ERROR_MESSAGE_PREFIX L"Incorrect valid area of dom."); + }; + + for (auto&& command : *commandListRef.Obj()) + { + command.Apply(Overloading( + [&](const remoteprotocol::RenderingCommand_BeginBoundary& command) + { + // a new boundary should be a new node covering existing nodes + // the valid area of boundary is clipped by its bounds + // so the valid area to compare from its potential parent dom needs to clipped by its bounds + prepareParentFromCommand( + command.boundary.bounds, + command.boundary.areaClippedBySelf, + [&](auto&& dom) { return dom->validArea.Intersect(command.boundary.bounds); } + ); + + auto dom = Ptr(new UnitTestRenderingDom); + dom->hitTestResult = command.boundary.hitTestResult; + dom->cursor = command.boundary.cursor; + dom->bounds = command.boundary.bounds; + dom->validArea = command.boundary.areaClippedBySelf; + domBoundaries.Add(push(dom)); + }, + [&](const remoteprotocol::RenderingCommand_EndBoundary& command) + { + popBoundary(); + }, + [&](const remoteprotocol::RenderingCommand_Element& command) + { + // a new element should be a new node covering existing nodes + // the valid area of boundary is clipped by its parent + // so the valid area to compare from its potential parent dom is its valid area + prepareParentFromCommand( + command.rendering.bounds, + command.rendering.areaClippedByParent, + [&](auto&& dom) { return dom->validArea; } + ); + + auto dom = Ptr(new UnitTestRenderingDom); + dom->element = command.element; + dom->bounds = command.rendering.bounds; + dom->validArea = command.rendering.bounds.Intersect(command.rendering.areaClippedByParent); + push(dom); + })); + } + + return domRoot; +#undef ERROR_MESSAGE_PREFIX + } + + bool LogRenderingResult() + { + if (this->lastRenderingCommands) + { + candidateFrameId = this->lastFrameId; + candidateRenderingResult = this->lastRenderingCommands; + this->lastRenderingCommands = {}; + everRendered = true; + } + else if (everRendered) + { + if (candidateRenderingResult) + { + auto descs = Ptr(new collections::Dictionary); + CopyFrom(*descs.Obj(), this->lastElementDescs); + auto transformed = TransformLastRenderingResult(candidateRenderingResult); + this->loggedTrace.frames->Add({ + candidateFrameId, + {}, + this->sizingConfig, + descs, + candidateRenderingResult, + transformed + }); + candidateRenderingResult = {}; + } + return true; + } + return false; + } + + public: + + template + UnitTestRemoteProtocol_Logging(TArgs&& ...args) + : TProtocol(std::forward(args)...) + { + } + + const auto& GetLoggedTrace() + { + return this->loggedTrace; + } + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTPROTOCOL.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTPROTOCOL +#define VCZH_PRESENTATION_GUIUNITTESTPROTOCOL + + +namespace vl::presentation::unittest +{ + +/*********************************************************************** +UnitTestFrameworkConfig +***********************************************************************/ + + struct UnitTestFrameworkConfig + { + filesystem::FilePath snapshotFolder; + filesystem::FilePath resourceFolder; + }; + + extern const UnitTestFrameworkConfig& GetUnitTestFrameworkConfig(); + +/*********************************************************************** +UnitTestRemoteProtocol +***********************************************************************/ + + template class ...TMixins> + struct Mixin; + + template + struct Mixin + { + using Type = TBase; + }; + + template class TMixin, template class ...TOtherMixins> + struct Mixin + { + using Type = typename Mixin, TOtherMixins...>::Type; + }; + + using UnitTestRemoteProtocolFeatures = Mixin< + UnitTestRemoteProtocolBase, + UnitTestRemoteProtocol_MainWindow, + UnitTestRemoteProtocol_IO, + UnitTestRemoteProtocol_Rendering, + UnitTestRemoteProtocol_Logging, + UnitTestRemoteProtocol_IOCommands + >::Type; + + class UnitTestRemoteProtocol : public UnitTestRemoteProtocolFeatures + { + using EventPair = collections::Pair, Func>; + protected: + const UnitTestFrameworkConfig& frameworkConfig; + WString appName; + collections::List processRemoteEvents; + vint nextEventIndex = 0; + bool stopped = false; + + public: + + UnitTestRemoteProtocol(const WString& _appName, UnitTestScreenConfig _globalConfig) + : UnitTestRemoteProtocolFeatures(_globalConfig) + , frameworkConfig(GetUnitTestFrameworkConfig()) + , appName(_appName) + { + } + + template + void OnNextIdleFrame(TCallback&& callback) + { + processRemoteEvents.Add({ Nullable{},std::forward(callback) }); + } + + template + void OnNextIdleFrame(const WString& name, TCallback&& callback) + { + processRemoteEvents.Add({ name,std::forward(callback) }); + } + + protected: + +/*********************************************************************** +IGuiRemoteProtocolMessages (Initialization) +***********************************************************************/ + + void RequestControllerConnectionEstablished() override + { + ResetCreatedObjects(); + } + + void RequestControllerConnectionStopped() override + { + stopped = true; + } + +/*********************************************************************** +IGuiRemoteProtocol +***********************************************************************/ + + void Submit() override + { + } + + void ProcessRemoteEvents() override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::unittest::UnitTestRemoteProtocol::ProcessRemoteEvents()#" + if (!stopped) + { + if (LogRenderingResult()) + { + vl::unittest::UnitTest::PrintMessage(L"Execute idle frame[" + itow(nextEventIndex) + L"]", vl::unittest::UnitTest::MessageKind::Info); + auto [name, func] = processRemoteEvents[nextEventIndex]; + if (name) + { + auto&& lastFrame = (*loggedTrace.frames.Obj())[loggedTrace.frames->Count() - 1]; + CHECK_ERROR(!lastFrame.frameName, ERROR_MESSAGE_PREFIX L"The last frame has already been assigned a name."); + lastFrame.frameName = name; + } + func(); + nextEventIndex++; + } + } +#undef ERROR_MESSAGE_PREFIX + } + }; +} + +#endif + +/*********************************************************************** +.\GUIUNITTESTUTILITIES.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +Unit Test Snapsnot and other Utilities +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIUNITTESTUTILITIES +#define VCZH_PRESENTATION_GUIUNITTESTUTILITIES + + +namespace vl::presentation::unittest +{ + class IUnitTestContext : public virtual Interface + { + public: + }; + + using UnitTestMainFunc = vl::Func; + using UnitTestLinkFunc = vl::Func; +} + +extern void GacUIUnitTest_Initialize(const vl::presentation::unittest::UnitTestFrameworkConfig* config); +extern void GacUIUnitTest_Finalize(); +extern void GacUIUnitTest_SetGuiMainProxy(const vl::presentation::unittest::UnitTestMainFunc& proxy); +extern void GacUIUnitTest_LinkGuiMainProxy(const vl::presentation::unittest::UnitTestLinkFunc& proxy); +extern void GacUIUnitTest_Start(const vl::WString& appName, vl::Nullable config = {}); +extern void GacUIUnitTest_Start_WithResourceAsText(const vl::WString& appName, vl::Nullable config, const vl::WString& resourceText); +extern vl::Ptr GacUIUnitTest_CompileAndLoad(const vl::WString& xmlResource); + +#ifdef VCZH_DESCRIPTABLEOBJECT_WITH_METADATA + +template +void GacUIUnitTest_StartFast_WithResourceAsText(const vl::WString& appName, const vl::WString& windowTypeFullName, const vl::WString& resourceText, vl::Nullable config = {}) +{ + GacUIUnitTest_LinkGuiMainProxy([=]( + vl::presentation::unittest::UnitTestRemoteProtocol* protocol, + vl::presentation::unittest::IUnitTestContext* context, + const vl::presentation::unittest::UnitTestMainFunc& previousMainProxy + ) + { + protocol->GetEvents()->OnControllerConnect(); + auto theme = vl::Ptr(new TTheme); + vl::presentation::theme::RegisterTheme(theme); + { + auto windowValue = vl::reflection::description::Value::Create(windowTypeFullName); + TEST_ASSERT(windowValue.GetRawPtr()); + + auto window = vl::Ptr(windowValue.GetRawPtr()->SafeAggregationCast()); + TEST_ASSERT(window); + + window->MoveToScreenCenter(); + previousMainProxy(protocol, context); + vl::presentation::controls::GetApplication()->Run(window.Obj()); + } + vl::presentation::theme::UnregisterTheme(theme->Name); + }); + GacUIUnitTest_Start_WithResourceAsText(appName, config, resourceText); +} + +#endif + +#endif diff --git a/Import/GacUI.Windows.cpp b/Import/GacUI.Windows.cpp index 4c61592f..e4312949 100644 --- a/Import/GacUI.Windows.cpp +++ b/Import/GacUI.Windows.cpp @@ -2880,8 +2880,16 @@ int SetupWindowsDirect2DRendererInternal(bool hosted) GuiHostedController* hostedController = nullptr; StartWindowsNativeController(hInstance); auto nativeController = GetWindowsNativeController(); - if (hosted) hostedController = new GuiHostedController(nativeController); - SetNativeController(hostedController ? hostedController : nativeController); + if (hosted) + { + hostedController = new GuiHostedController(nativeController); + SetNativeController(hostedController); + SetHostedApplication(hostedController->GetHostedApplication()); + } + else + { + SetNativeController(nativeController); + } { // install listener @@ -2897,7 +2905,11 @@ int SetupWindowsDirect2DRendererInternal(bool hosted) // destroy controller SetNativeController(nullptr); - if (hostedController) delete hostedController; + if (hostedController) + { + SetHostedApplication(nullptr); + delete hostedController; + } StopWindowsNativeController(); return 0; } @@ -8628,8 +8640,16 @@ int SetupWindowsGDIRendererInternal(bool hosted) GuiHostedController* hostedController = nullptr; StartWindowsNativeController(hInstance); auto nativeController = GetWindowsNativeController(); - if (hosted) hostedController = new GuiHostedController(nativeController); - SetNativeController(hostedController ? hostedController : nativeController); + if (hosted) + { + hostedController = new GuiHostedController(nativeController); + SetNativeController(hostedController); + SetHostedApplication(hostedController->GetHostedApplication()); + } + else + { + SetNativeController(nativeController); + } { // install listener @@ -8645,7 +8665,11 @@ int SetupWindowsGDIRendererInternal(bool hosted) // destroy controller SetNativeController(nullptr); - if (hostedController) delete hostedController; + if (hostedController) + { + SetHostedApplication(nullptr); + delete hostedController; + } StopWindowsNativeController(); return 0; } @@ -13691,11 +13715,6 @@ WindowsImageFrame WindowsImageFrame::~WindowsImageFrame() { - // TODO: (enumerable) foreach - for(vint i=0;iOnDetach(this); - } } INativeImage* WindowsImageFrame::GetImage() @@ -13711,37 +13730,6 @@ WindowsImageFrame return Size(width, height); } - bool WindowsImageFrame::SetCache(void* key, Ptr cache) - { - vint index=caches.Keys().IndexOf(key); - if(index!=-1) - { - return false; - } - caches.Add(key, cache); - cache->OnAttach(this); - return true; - } - - Ptr WindowsImageFrame::GetCache(void* key) - { - vint index=caches.Keys().IndexOf(key); - return index==-1?nullptr:caches.Values().Get(index); - } - - Ptr WindowsImageFrame::RemoveCache(void* key) - { - vint index=caches.Keys().IndexOf(key); - if(index==-1) - { - return 0; - } - Ptr cache=caches.Values().Get(index); - cache->OnDetach(this); - caches.Remove(key); - return cache; - } - IWICBitmap* WindowsImageFrame::GetFrameBitmap() { return frameBitmap.Obj(); diff --git a/Import/GacUI.Windows.h b/Import/GacUI.Windows.h index ca2978b8..f96ee995 100644 --- a/Import/GacUI.Windows.h +++ b/Import/GacUI.Windows.h @@ -1926,12 +1926,11 @@ namespace vl { namespace windows { - class WindowsImageFrame : public Object, public INativeImageFrame + class WindowsImageFrame : public NativeImageFrameBase { protected: INativeImage* image; ComPtr frameBitmap; - collections::Dictionary> caches; void Initialize(IWICBitmapSource* bitmapSource); public: @@ -1941,9 +1940,6 @@ namespace vl INativeImage* GetImage()override; Size GetSize()override; - bool SetCache(void* key, Ptr cache)override; - Ptr GetCache(void* key)override; - Ptr RemoveCache(void* key)override; IWICBitmap* GetFrameBitmap(); void SaveBitmapToStream(stream::IStream& imageStream); }; diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index e6933d67..b92bd2bd 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -615,7 +615,11 @@ GuiApplicationMain #ifndef VCZH_DEBUG_NO_REFLECTION GetGlobalTypeManager()->Load(); #endif - GetPluginManager()->Load(); + GetPluginManager()->Load(true, true); + } + else + { + GetPluginManager()->Load(false, true); } GetCurrentController()->InputService()->StartTimer(); @@ -637,11 +641,17 @@ GuiApplicationMain if (!GACUI_UNITTEST_ONLY_SKIP_TYPE_AND_PLUGIN_LOAD_UNLOAD) { + GetPluginManager()->Unload(true, true); DestroyPluginManager(); #ifndef VCZH_DEBUG_NO_REFLECTION ResetGlobalTypeManager(); #endif } + else + { + GetPluginManager()->Unload(false, true); + } + if (!GACUI_UNITTEST_ONLY_SKIP_THREAD_LOCAL_STORAGE_DISPOSE_STORAGES) { ThreadLocalStorage::DisposeStorages(); @@ -1765,6 +1775,24 @@ GuiInstanceRootObject } return false; } + + reflection::description::Value GuiInstanceRootObject::GetNamedObject(const WString& name) + { + vint index = namedObjects.Keys().IndexOf(name); + if (index == -1) + { + return {}; + } + else + { + return namedObjects.Values()[index]; + } + } + + void GuiInstanceRootObject::SetNamedObject(const WString& name, const reflection::description::Value& namedObject) + { + namedObjects.Set(name, namedObject); + } } } } @@ -2556,6 +2584,19 @@ GuiWindow } } + bool GuiWindow::IsRenderedAsMaximized() + { + auto nativeWindow = GetNativeWindow(); + if (nativeWindow && GetApplication()->GetMainWindow() == this) + { + if (auto hostedApp = GetHostedApplication()) + { + nativeWindow = hostedApp->GetNativeWindowHost(); + } + } + return nativeWindow ? nativeWindow->GetSizeState() == INativeWindow::Maximized : false; + } + void GuiWindow::SetControlTemplateProperties() { if (auto ct = TypedControlTemplateObject(false)) @@ -2566,7 +2607,7 @@ GuiWindow ct->SetSizeBox(hasSizeBox); ct->SetIconVisible(isIconVisible); ct->SetTitleBar(hasTitleBar); - ct->SetMaximized(GetNativeWindow()->GetSizeState() != INativeWindow::Maximized); + ct->SetMaximized(IsRenderedAsMaximized()); ct->SetActivated(GetRenderingAsActivated()); } } @@ -2657,7 +2698,7 @@ GuiWindow void GuiWindow::Moved() { GuiControlHost::Moved(); - TypedControlTemplateObject(true)->SetMaximized(GetNativeWindow()->GetSizeState() != INativeWindow::Maximized); + TypedControlTemplateObject(true)->SetMaximized(IsRenderedAsMaximized()); } void GuiWindow::Opened() @@ -3546,10 +3587,10 @@ GuiGraphicsComposition } } - void GuiGraphicsComposition::InvokeOnCompositionStateChanged() + void GuiGraphicsComposition::InvokeOnCompositionStateChanged(bool forceRequestRender) { OnCompositionStateChanged(); - if (relatedHostRecord && GetEventuallyVisible()) + if (relatedHostRecord && (forceRequestRender || GetEventuallyVisible())) { relatedHostRecord->host->RequestRender(); } @@ -3693,7 +3734,7 @@ GuiGraphicsComposition if (visible != value) { visible = value; - InvokeOnCompositionStateChanged(); + InvokeOnCompositionStateChanged(true); } } @@ -3750,7 +3791,7 @@ GuiGraphicsComposition } } - if (children.Count() > 0 || associatedHitTestResult != INativeWindowListener::NoDecision) + if (children.Count() > 0 || associatedHitTestResult != INativeWindowListener::NoDecision || associatedCursor) { renderTarget->PushClipper(bounds, this); if (!renderTarget->IsClipperCoverWholeTarget()) @@ -12599,6 +12640,17 @@ GuiSelectableListControl { ClearSelection(); } + else if (itemReferenceUpdated && selectedItems.Count() > 0) + { + vint cmin = start; + vint cmax = start + count - 1; + vint smin = selectedItems[0]; + vint smax = selectedItems[selectedItems.Count() - 1]; + if (cmin <= smax && smin <= cmax) + { + ClearSelection(); + } + } } void GuiSelectableListControl::OnStyleInstalled(vint itemIndex, ItemStyle* style, bool refreshPropertiesOnly) @@ -26186,13 +26238,16 @@ GuiToolstripCommandPlugin GUI_PLUGIN_DEPEND(GacUI_Parser); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - IGuiParserManager* manager=GetParserManager(); - manager->SetParser(L"SHORTCUT", Ptr(new GuiToolstripCommandShortcutParser)); + if (controllerUnrelatedPlugins) + { + IGuiParserManager* manager = GetParserManager(); + manager->SetParser(L"SHORTCUT", Ptr(new GuiToolstripCommandShortcutParser)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -33675,14 +33730,7 @@ GuiGraphicsRenderTarget } else { - Rect previousClipper = GetClipper(); - Rect currentClipper; - - currentClipper.x1 = (previousClipper.x1 > clipper.x1 ? previousClipper.x1 : clipper.x1); - currentClipper.y1 = (previousClipper.y1 > clipper.y1 ? previousClipper.y1 : clipper.y1); - currentClipper.x2 = (previousClipper.x2 < clipper.x2 ? previousClipper.x2 : clipper.x2); - currentClipper.y2 = (previousClipper.y2 < clipper.y2 ? previousClipper.y2 : clipper.y2); - + Rect currentClipper = GetClipper().Intersect(clipper); if (currentClipper.x1 < currentClipper.x2 && currentClipper.y1 < currentClipper.y2) { clippers.Add(currentClipper); @@ -35024,6 +35072,54 @@ Native Window Provider } } +/*********************************************************************** +Helper Functions +***********************************************************************/ + + NativeImageFrameBase::NativeImageFrameBase() + { + } + + NativeImageFrameBase::~NativeImageFrameBase() + { + // TODO: (enumerable) foreach + for (vint i = 0; i < caches.Count(); i++) + { + caches.Values().Get(i)->OnDetach(this); + } + } + + bool NativeImageFrameBase::SetCache(void* key, Ptr cache) + { + vint index = caches.Keys().IndexOf(key); + if (index != -1) + { + return false; + } + caches.Add(key, cache); + cache->OnAttach(this); + return true; + } + + Ptr NativeImageFrameBase::GetCache(void* key) + { + vint index = caches.Keys().IndexOf(key); + return index == -1 ? nullptr : caches.Values().Get(index); + } + + Ptr NativeImageFrameBase::RemoveCache(void* key) + { + vint index = caches.Keys().IndexOf(key); + if (index == -1) + { + return 0; + } + Ptr cache = caches.Values().Get(index); + cache->OnDetach(this); + caches.Remove(key); + return cache; + } + /*********************************************************************** Helper Functions ***********************************************************************/ @@ -35216,7 +35312,8 @@ public: void SaveToStream(stream::IStream& imageStream, FormatType formatType) override { CHECK_ERROR(formatType == FormatType::Unknown, L"Not Implemented!"); - CopyStream(imageStream, memoryStream); + memoryStream.SeekFromBegin(0); + CopyStream(memoryStream, imageStream); } }; @@ -35297,6 +35394,35 @@ int SetupGacGenNativeController() return 0; } +/*********************************************************************** +.\PLATFORMPROVIDERS\HOSTED\GUIHOSTEDAPPLICATION.CPP +***********************************************************************/ + +namespace vl::presentation +{ + IGuiHostedApplication* hostedApplication = nullptr; + + IGuiHostedApplication* GetHostedApplication() + { + return hostedApplication; + } + + void SetHostedApplication(IGuiHostedApplication* _hostedApp) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::SetHostedApplication(IGuiHostedApplication*)#" + if (_hostedApp) + { + CHECK_ERROR(!hostedApplication, ERROR_MESSAGE_PREFIX L"IGuiHostedApplication instance already exists during initializing."); + } + else + { + CHECK_ERROR(hostedApplication, ERROR_MESSAGE_PREFIX L"IGuiHostedApplication instance does not exist during finalizing."); + } + hostedApplication = _hostedApp; +#undef ERROR_MESSAGE_PREFIX + } +} + /*********************************************************************** .\PLATFORMPROVIDERS\HOSTED\GUIHOSTEDCONTROLLER.CPP ***********************************************************************/ @@ -36320,6 +36446,15 @@ GuiHostedController::INativeWindowService return nativeController->WindowService()->RunOneCycle(); } +/*********************************************************************** +GuiHostedController::IGuiHostedApplication +***********************************************************************/ + + INativeWindow* GuiHostedController::GetNativeWindowHost() + { + return nativeWindow; + } + /*********************************************************************** GuiHostedController ***********************************************************************/ @@ -36335,6 +36470,11 @@ GuiHostedController { } + IGuiHostedApplication* GuiHostedController::GetHostedApplication() + { + return this; + } + void GuiHostedController::Initialize() { #define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiHostedController()::Initialize()#" @@ -37680,7 +37820,6 @@ GuiRemoteController::INativeInputService vint idIsKeyPressing = remoteMessages.RequestIOIsKeyPressing(code); remoteMessages.Submit(); bool result = remoteMessages.RetrieveIOIsKeyPressing(idIsKeyPressing); - remoteMessages.ClearResponses(); return result; } @@ -37689,7 +37828,6 @@ GuiRemoteController::INativeInputService vint idIsKeyToggled = remoteMessages.RequestIOIsKeyToggled(code); remoteMessages.Submit(); bool result = remoteMessages.RetrieveIOIsKeyToggled(idIsKeyToggled); - remoteMessages.ClearResponses(); return result; } @@ -37884,6 +38022,7 @@ GuiRemoteController::INativeWindowService { callbackService.InvokeGlobalTimer(); } + asyncService.ExecuteAsyncTasks(); } return !connectionStopped; } @@ -37900,14 +38039,15 @@ GuiRemoteController (events) remoteMessages.Submit(); remoteFontConfig = remoteMessages.RetrieveControllerGetFontConfig(idGetFontConfig); remoteScreenConfig = remoteMessages.RetrieveControllerGetScreenConfig(idGetScreenConfig); - remoteMessages.ClearResponses(); remoteWindow.OnControllerConnect(); + imageService.OnControllerConnect(); resourceManager->OnControllerConnect(); } void GuiRemoteController::OnControllerDisconnect() { remoteWindow.OnControllerDisconnect(); + imageService.OnControllerDisconnect(); resourceManager->OnControllerDisconnect(); } @@ -37936,6 +38076,7 @@ GuiRemoteController , remoteMessages(this) , remoteEvents(this) , remoteWindow(this) + , imageService(this) { } @@ -37946,10 +38087,12 @@ GuiRemoteController void GuiRemoteController::Initialize() { remoteProtocol->Initialize(&remoteEvents); + imageService.Initialize(); } void GuiRemoteController::Finalize() { + imageService.Finalize(); remoteMessages.RequestControllerConnectionStopped(); remoteMessages.Submit(); } @@ -37980,7 +38123,7 @@ GuiRemoteController (INativeController) INativeImageService* GuiRemoteController::ImageService() { - CHECK_FAIL(L"Not Implemented!"); + return &imageService; } INativeInputService* GuiRemoteController::InputService() @@ -38034,6 +38177,7 @@ int SetupRemoteNativeController(vl::presentation::IGuiRemoteProtocol* protocol) SetNativeController(&hostedController); SetGuiGraphicsResourceManager(&hostedResourceManager); + SetHostedApplication(hostedController.GetHostedApplication()); remoteController.Initialize(); remoteResourceManager.Initialize(); @@ -38043,6 +38187,7 @@ int SetupRemoteNativeController(vl::presentation::IGuiRemoteProtocol* protocol) remoteResourceManager.Finalize(); remoteController.Finalize(); + SetHostedApplication(nullptr); SetGuiGraphicsResourceManager(nullptr); SetNativeController(nullptr); return 0; @@ -38073,17 +38218,6 @@ GuiRemoteMessages remote->remoteProtocol->Submit(); } - void GuiRemoteMessages::ClearResponses() - { -#define MESSAGE_NORES(NAME, RESPONSE) -#define MESSAGE_RES(NAME, RESPONSE) response ## NAME.Clear(); -#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, ...) MESSAGE_ ## RESTAG(NAME, RESPONSE) - GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) -#undef MESSAGE_HANDLER -#undef MESSAGE_RES -#undef MESSAGE_NORES - } - /*********************************************************************** GuiRemoteMessages (messages) ***********************************************************************/ @@ -38130,9 +38264,11 @@ GuiRemoteMessages (messages) {\ response ## NAME.Add(id, arguments);\ }\ - const RESPONSE& GuiRemoteMessages::Retrieve ## NAME(vint id)\ + RESPONSE GuiRemoteMessages::Retrieve ## NAME(vint id)\ {\ - return response ## NAME[id];\ + RESPONSE response = response ## NAME[id];\ + response ## NAME.Remove(id);\ + return response;\ }\ #define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, ...) MESSAGE_ ## RESTAG(NAME, RESPONSE) @@ -38177,8 +38313,8 @@ GuiRemoteEvents (events) void GuiRemoteEvents::OnControllerConnect() { - remote->OnControllerConnect(); remote->remoteMessages.RequestControllerConnectionEstablished(); + remote->OnControllerConnect(); remote->remoteMessages.Submit(); } @@ -38347,6 +38483,27 @@ GuiRemoteGraphicsRenderTarget return INativeWindowListener::NoDecision; } + Nullable GuiRemoteGraphicsRenderTarget::GetCursorFromGenerator(reflection::DescriptableObject* generator) + { + if (auto composition = dynamic_cast(generator)) + { + if (auto cursor = composition->GetAssociatedCursor()) + { + if (auto graphicsHost = composition->GetRelatedGraphicsHost()) + { + if (auto nativeWindow = graphicsHost->GetNativeWindow()) + { + if (nativeWindow == GetCurrentController()->WindowService()->GetMainWindow()) + { + return cursor->GetSystemCursorType(); + } + } + } + } + } + return {}; + } + void GuiRemoteGraphicsRenderTarget::StartRenderingOnNativeWindow() { CHECK_ERROR(hitTestResults.Count() == 0, L"vl::presentation::elements::GuiRemoteGraphicsRenderTarget::StartRenderingOnNativeWindow()#Internal error: hit test result stack is not cleared."); @@ -38389,7 +38546,11 @@ GuiRemoteGraphicsRenderTarget } } - remote->remoteMessages.RequestRendererBeginRendering(); + { + remoteprotocol::ElementBeginRendering arguments; + arguments.frameId = ++usedFrameIds; + remote->remoteMessages.RequestRendererBeginRendering(arguments); + } } RenderTargetFailure GuiRemoteGraphicsRenderTarget::StopRenderingOnNativeWindow() @@ -38398,7 +38559,6 @@ GuiRemoteGraphicsRenderTarget vint idRendering = remote->remoteMessages.RequestRendererEndRendering(); remote->remoteMessages.Submit(); auto measuring = remote->remoteMessages.RetrieveRendererEndRendering(idRendering); - remote->remoteMessages.ClearResponses(); bool minSizeChanged = false; @@ -38430,6 +38590,15 @@ GuiRemoteGraphicsRenderTarget } } + if (measuring.createdImages) + { + for (auto&& imageMetadata : *measuring.createdImages.Obj()) + { + auto image = remote->imageService.GetImage(imageMetadata.id); + image->UpdateFromImageMetadata(imageMetadata); + } + } + if (measuring.minSizes) { for (auto&& minSize : *measuring.minSizes.Obj()) @@ -38472,18 +38641,32 @@ GuiRemoteGraphicsRenderTarget { clipperValidArea = validArea; auto hitTestResult = GetHitTestResultFromGenerator(generator); + auto cursor = GetCursorFromGenerator(generator); + + remoteprotocol::ElementBoundary arguments; if (hitTestResult != INativeWindowListener::NoDecision) { if (hitTestResults.Count() == 0 || hitTestResults[hitTestResults.Count() - 1] != hitTestResult) { - remoteprotocol::ElementBoundary arguments; arguments.hitTestResult = hitTestResult; - arguments.bounds = clipper; - arguments.clipper = validArea; - remote->remoteMessages.RequestRendererBeginBoundary(arguments); } hitTestResults.Add(hitTestResult); } + if (cursor) + { + if (cursors.Count() == 0 || cursors[cursors.Count() - 1] != cursor.Value()) + { + arguments.cursor = cursor.Value(); + } + cursors.Add(cursor.Value()); + } + + if (arguments.hitTestResult || arguments.cursor) + { + arguments.bounds = clipper; + arguments.areaClippedBySelf = validArea; + remote->remoteMessages.RequestRendererBeginBoundary(arguments); + } } void GuiRemoteGraphicsRenderTarget::AfterPushedClipperAndBecameInvalid(Rect clipper, reflection::DescriptableObject* generator) @@ -38500,14 +38683,30 @@ GuiRemoteGraphicsRenderTarget { clipperValidArea = validArea; auto hitTestResult = GetHitTestResultFromGenerator(generator); + auto cursor = GetCursorFromGenerator(generator); + bool needEndBoundary = false; + if (hitTestResult != INativeWindowListener::NoDecision) { hitTestResults.RemoveAt(hitTestResults.Count() - 1); if (hitTestResults.Count() == 0 || hitTestResults[hitTestResults.Count() - 1] != hitTestResult) { - remote->remoteMessages.RequestRendererEndBoundary(); + needEndBoundary = true; } } + if (cursor) + { + cursors.RemoveAt(cursors.Count() - 1); + if (cursors.Count() == 0 || cursors[cursors.Count() - 1] != cursor.Value()) + { + needEndBoundary = true; + } + } + + if (needEndBoundary) + { + remote->remoteMessages.RequestRendererEndBoundary(); + } } GuiRemoteGraphicsRenderTarget::GuiRemoteGraphicsRenderTarget(GuiRemoteController* _remote, GuiHostedController* _hostedController) @@ -38779,7 +38978,7 @@ GuiSolidBorderElementRenderer remoteprotocol::ElementRendering arguments; arguments.id = id; arguments.bounds = bounds; - arguments.clipper = this->renderTarget->GetClipperValidArea(); + arguments.areaClippedByParent = this->renderTarget->GetClipperValidArea(); this->renderTarget->GetRemoteMessages().RequestRendererRenderElement(arguments); renderingBatchId = this->renderTarget->renderingBatchId; } @@ -38934,27 +39133,17 @@ GuiSolidLabelElementRenderer GuiSolidLabelElementRenderer::MeasuringRequest GuiSolidLabelElementRenderer::GetMeasuringRequest() { - if (element->GetWrapLine()) + if (element->GetEllipse()) { - if (element->GetWrapLineHeightCalculation()) - { - return ElementSolidLabelMeasuringRequest::TotalSize; - } - else - { - return {}; - } + return ElementSolidLabelMeasuringRequest::FontHeight; + } + else if (element->GetWrapLine() && !element->GetWrapLineHeightCalculation()) + { + return {}; } else { - if (element->GetEllipse()) - { - return ElementSolidLabelMeasuringRequest::FontHeight; - } - else - { - return ElementSolidLabelMeasuringRequest::TotalSize; - } + return ElementSolidLabelMeasuringRequest::TotalSize; } } @@ -38965,6 +39154,7 @@ GuiSolidLabelElementRenderer GuiSolidLabelElementRenderer::GuiSolidLabelElementRenderer() { + minSize = { 1,1 }; } bool GuiSolidLabelElementRenderer::NeedUpdateMinSizeFromCache() @@ -38980,7 +39170,8 @@ GuiSolidLabelElementRenderer if (index != -1) { needFontHeight = false; - minSize = { 0,renderTarget->fontHeights.Values()[index] }; + vint size = renderTarget->fontHeights.Values()[index]; + UpdateMinSize({ size,size }); } } } @@ -38988,6 +39179,8 @@ GuiSolidLabelElementRenderer void GuiSolidLabelElementRenderer::UpdateMinSize(Size size) { minSize = size; + if (minSize.x < 1)minSize.x = 1; + if (minSize.y < 1)minSize.y = 1; } void GuiSolidLabelElementRenderer::NotifyMinSizeCacheInvalidated() @@ -39067,20 +39260,116 @@ GuiSolidLabelElementRenderer GuiImageFrameElementRenderer ***********************************************************************/ + GuiRemoteGraphicsImage* GuiImageFrameElementRenderer::GetRemoteImage() + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::elements_remoteprotocol::GuiImageFrameElementRenderer::GetRemoteImage()#" + if (element && element->GetImage()) + { + auto image = dynamic_cast(element->GetImage().Obj()); + CHECK_ERROR(image, ERROR_MESSAGE_PREFIX L"Only INativeImage that created from GetCurrentController()->ImageService() is supported."); + return image; + } + return nullptr; +#undef ERROR_MESSAGE_PREFIX + } + + void GuiImageFrameElementRenderer::UpdateMinSizeFromImage(GuiRemoteGraphicsImage* image) + { + needUpdateSize = true; + if (!image || element->GetStretch()) + { + minSize = { 0,0 }; + needUpdateSize = false; + } + else if (image->status == GuiRemoteGraphicsImage::MetadataStatus::Retrived) + { + if (0 <= element->GetFrameIndex() && element->GetFrameIndex() < image->GetFrameCount()) + { + minSize = image->GetFrame(element->GetFrameIndex())->GetSize(); + } + else + { + minSize = { 0,0 }; + } + needUpdateSize = false; + } + } + GuiImageFrameElementRenderer::GuiImageFrameElementRenderer() { } + bool GuiImageFrameElementRenderer::NeedUpdateMinSizeFromCache() + { + return needUpdateSize; + } + + void GuiImageFrameElementRenderer::TryFetchMinSizeFromCache() + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::elements_remoteprotocol::GuiImageFrameElementRenderer::TryFetchMinSizeFromCache()#" + auto image = GetRemoteImage(); + if (image) + { + CHECK_ERROR(image->status == GuiRemoteGraphicsImage::MetadataStatus::Retrived, ERROR_MESSAGE_PREFIX L"The expected metadata of an image does not exist."); + } + UpdateMinSizeFromImage(image); + needUpdateSize = false; +#undef ERROR_MESSAGE_PREFIX + } + void GuiImageFrameElementRenderer::SendUpdateElementMessages(bool fullContent) { - // Image - // FrameIndex - // HorizontalAlignment - // VerticalAlignment - // Stretch - // Enabled - // UpdateMinSize(Stretch ? {0,0} : frame->GetSize()) - CHECK_FAIL(L"Not Implemented!"); + auto image = GetRemoteImage(); + if (image) + { + needUpdateSize = true; + if (fullContent && image->status == GuiRemoteGraphicsImage::MetadataStatus::Retrived) + { + image->status = GuiRemoteGraphicsImage::MetadataStatus::Uninitialized; + } + if (image->status == GuiRemoteGraphicsImage::MetadataStatus::Retrived) + { + UpdateMinSizeFromImage(image); + } + } + + remoteprotocol::ElementDesc_ImageFrame arguments; + arguments.id = id; + if (image) arguments.imageId = image->id; + arguments.imageFrame = element->GetFrameIndex(); + arguments.stretch = element->GetStretch(); + arguments.enabled = element->GetEnabled(); + + switch (element->GetHorizontalAlignment()) + { + case Alignment::Left: + arguments.horizontalAlignment = ElementHorizontalAlignment::Left; + break; + case Alignment::Right: + arguments.horizontalAlignment = ElementHorizontalAlignment::Right; + break; + default: + arguments.horizontalAlignment = ElementHorizontalAlignment::Center; + } + + switch (element->GetVerticalAlignment()) + { + case Alignment::Top: + arguments.verticalAlignment = ElementVerticalAlignment::Top; + break; + case Alignment::Bottom: + arguments.verticalAlignment = ElementVerticalAlignment::Bottom; + break; + default: + arguments.verticalAlignment = ElementVerticalAlignment::Center; + } + + if (needUpdateSize && image) + { + arguments.imageCreation = image->GenerateImageCreation(); + } + + renderTarget->GetRemoteMessages().RequestRendererUpdateElement_ImageFrame(arguments); } /*********************************************************************** @@ -39155,6 +39444,242 @@ GuiColorizedTextElementRenderer } } +/*********************************************************************** +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEGRAPHICS_IMAGESERVICE.CPP +***********************************************************************/ + +namespace vl::presentation +{ +/*********************************************************************** +GuiRemoteGraphicsImageFrame +***********************************************************************/ + + GuiRemoteGraphicsImageFrame::GuiRemoteGraphicsImageFrame(GuiRemoteGraphicsImage* _image) + : image(_image) + { + } + + GuiRemoteGraphicsImageFrame::~GuiRemoteGraphicsImageFrame() + { + } + + INativeImage* GuiRemoteGraphicsImageFrame::GetImage() + { + return image; + } + + Size GuiRemoteGraphicsImageFrame::GetSize() + { + return size; + } + +/*********************************************************************** +GuiRemoteGraphicsImage +***********************************************************************/ + + void GuiRemoteGraphicsImage::EnsureMetadata() + { + if (status == MetadataStatus::Retrived) return; + auto arguments = GenerateImageCreation(); + + vint idImageCreated = remote->remoteMessages.RequestImageCreated(arguments); + remote->remoteMessages.Submit(); + auto imageMetadata = remote->remoteMessages.RetrieveImageCreated(idImageCreated); + UpdateFromImageMetadata(imageMetadata); + } + + GuiRemoteGraphicsImage::GuiRemoteGraphicsImage(GuiRemoteController* _remote, vint _id, Ptr _binary) + : remote(_remote) + , id(_id) + , binary(_binary) + { + remote->imageService.images.Add(id, this); + } + + GuiRemoteGraphicsImage::~GuiRemoteGraphicsImage() + { + if (remote) + { + if (status == MetadataStatus::Retrived) + { + remote->remoteMessages.RequestImageDestroyed(id); + } + remote->imageService.images.Remove(id); + } + } + + remoteprotocol::ImageCreation GuiRemoteGraphicsImage::GenerateImageCreation() + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImage::GenerateImageCreation()#" + CHECK_ERROR(status != MetadataStatus::Retrived, L"Cannot call this function when status is Retrived."); + + remoteprotocol::ImageCreation arguments; + arguments.id = id; + if (status == MetadataStatus::Uninitialized) + { + arguments.imageData = binary; + arguments.imageDataOmitted = false; + status = MetadataStatus::Requested; + } + else + { + arguments.imageDataOmitted = true; + } + + return arguments; +#undef ERROR_MESSAGE_PREFIX + } + + void GuiRemoteGraphicsImage::UpdateFromImageMetadata(const remoteprotocol::ImageMetadata& imageMetadata) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImage::UpdateFromImageMetadata(const remoteprotocol::ImageMetadata&)#" + + CHECK_ERROR(id == imageMetadata.id, L"Wrong image metadata id specified."); + + format = imageMetadata.format; + if (imageMetadata.frames) + { + if (frames.Count() > 0) + { + CHECK_ERROR(frames.Count() == imageMetadata.frames, L"New metadata should be identical to the last one."); + for (auto [imageFrameMetadata, index] : indexed(*imageMetadata.frames.Obj())) + { + CHECK_ERROR(frames[index]->size == imageFrameMetadata.size, L"New metadata should be identical to the last one."); + } + } + else + { + for (auto imageFrameMetadata : *imageMetadata.frames.Obj()) + { + auto frame = Ptr(new GuiRemoteGraphicsImageFrame(this)); + frame->size = imageFrameMetadata.size; + frames.Add(frame); + } + } + } + else + { + CHECK_ERROR(frames.Count() == 0, L"New metadata should be identical to the last one."); + } + + status = MetadataStatus::Retrived; +#undef ERROR_MESSAGE_PREFIX + } + + INativeImageService* GuiRemoteGraphicsImage::GetImageService() + { + return remote->ImageService(); + } + + INativeImage::FormatType GuiRemoteGraphicsImage::GetFormat() + { + EnsureMetadata(); + return format; + } + + vint GuiRemoteGraphicsImage::GetFrameCount() + { + EnsureMetadata(); + return frames.Count(); + } + + INativeImageFrame* GuiRemoteGraphicsImage::GetFrame(vint index) + { + EnsureMetadata(); + return frames[index].Obj(); + } + + void GuiRemoteGraphicsImage::SaveToStream(stream::IStream& imageStream, FormatType formatType) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImage::SaveToStream(IStream&, INativeImage::FormatType)#" + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"This function should not be called."); +#undef ERROR_MESSAGE_PREFIX + } + +/*********************************************************************** +GuiRemoteGraphicsImageService +***********************************************************************/ + + Ptr GuiRemoteGraphicsImageService::CreateImage(Ptr binary) + { + return Ptr(new GuiRemoteGraphicsImage(remote, ++usedImageIds, binary)); + } + + GuiRemoteGraphicsImageService::GuiRemoteGraphicsImageService(GuiRemoteController* _remote) + : remote(_remote) + { + } + + GuiRemoteGraphicsImageService::~GuiRemoteGraphicsImageService() + { + } + + void GuiRemoteGraphicsImageService::OnControllerConnect() + { + for (auto image : images.Values()) + { + image->status = GuiRemoteGraphicsImage::MetadataStatus::Uninitialized; + } + } + + void GuiRemoteGraphicsImageService::OnControllerDisconnect() + { + } + + void GuiRemoteGraphicsImageService::Initialize() + { + } + + void GuiRemoteGraphicsImageService::Finalize() + { + // TODO: (enumerable) foreach:reversed + for (vint i = images.Count() - 1; i >= 0; i--) + { + images.Values()[i]->remote = nullptr; + } + images.Clear(); + } + + GuiRemoteGraphicsImage* GuiRemoteGraphicsImageService::GetImage(vint id) + { + return images[id]; + } + + Ptr GuiRemoteGraphicsImageService::CreateImageFromFile(const WString& path) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImageService::CreateImageFromFile(const WString&)#" + CHECK_ERROR(remote, ERROR_MESSAGE_PREFIX L"This function cannot be called when GuiRemoteController is shut down."); + stream::FileStream fileStream(path, stream::FileStream::ReadOnly); + CHECK_ERROR(fileStream.IsAvailable(), ERROR_MESSAGE_PREFIX L"Unable to open file."); + + auto memoryStream = Ptr(new stream::MemoryStream((vint)fileStream.Size())); + CopyStream(fileStream, *memoryStream.Obj()); + return CreateImage(memoryStream); +#undef ERROR_MESSAGE_PREFIX + } + + Ptr GuiRemoteGraphicsImageService::CreateImageFromMemory(void* buffer, vint length) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImageService::CreateImageFromMemory(void*, vint)#" + CHECK_ERROR(remote, ERROR_MESSAGE_PREFIX L"This function cannot be called when GuiRemoteController is shut down."); + auto memoryStream = Ptr(new stream::MemoryStream(length)); + memoryStream->Write(buffer, length); + return CreateImage(memoryStream); +#undef ERROR_MESSAGE_PREFIX + } + + Ptr GuiRemoteGraphicsImageService::CreateImageFromStream(stream::IStream& imageStream) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::GuiRemoteGraphicsImageService::CreateImageFromStream(IStream&)#" + CHECK_ERROR(remote, ERROR_MESSAGE_PREFIX L"This function cannot be called when GuiRemoteController is shut down."); + auto memoryStream = Ptr(new stream::MemoryStream(imageStream.IsLimited() ? (vint)imageStream.Size() : 65536)); + imageStream.SeekFromBegin(0); + CopyStream(imageStream, *memoryStream.Obj()); + return CreateImage(memoryStream); +#undef ERROR_MESSAGE_PREFIX + } +} + /*********************************************************************** .\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOLSCHEMASHARED.CPP ***********************************************************************/ @@ -39211,6 +39736,31 @@ namespace vl::presentation::remoteprotocol return ConvertCustomTypeToJson(value.ToString()); } + template<> Ptr ConvertCustomTypeToJson>(const Ptr& value) + { + if (!value) + { + auto node = Ptr(new glr::json::JsonLiteral); + node->value = glr::json::JsonLiteralValue::Null; + return node; + } + + stream::MemoryStream base64WStringStream; + { + stream::UtfGeneralEncoder utf8ToWCharEncoder; + stream::EncoderStream utf8ToWCharStream(base64WStringStream, utf8ToWCharEncoder); + stream::Utf8Base64Encoder binaryToBase64Utf8Encoder; + stream::EncoderStream binaryToBase64Utf8Stream(utf8ToWCharStream, binaryToBase64Utf8Encoder); + value->SeekFromBegin(0); + stream::CopyStream(*value.Obj(), binaryToBase64Utf8Stream); + } + { + base64WStringStream.SeekFromBegin(0); + stream::StreamReader reader(base64WStringStream); + return ConvertCustomTypeToJson(reader.ReadToEnd()); + } + } + template<> void ConvertJsonToCustomType(Ptr node, bool& value) { #define ERROR_MESSAGE_PREFIX L"presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, bool&)#" @@ -39284,6 +39834,33 @@ namespace vl::presentation::remoteprotocol ConvertJsonToCustomType(node, strValue); value = Color::Parse(strValue); } + + template<> void ConvertJsonToCustomType>(Ptr node, Ptr& value) + { + if (auto jsonLiteral = node.Cast()) + { + if (jsonLiteral->value == glr::json::JsonLiteralValue::Null) + { + value = {}; + return; + } + } + else + { + WString base64; + ConvertJsonToCustomType(node, base64); + + value = Ptr(new stream::MemoryStream); + + stream::MemoryWrapperStream base64WStringStream((void*)base64.Buffer(), base64.Length() * sizeof(wchar_t)); + stream::UtfGeneralDecoder wcharToUtf8Decoder; + stream::DecoderStream wcharToUtf8Stream(base64WStringStream, wcharToUtf8Decoder); + stream::Utf8Base64Decoder base64Utf8ToBinaryDecoder; + stream::DecoderStream base64Utf8ToBinaryStream(wcharToUtf8Stream, base64Utf8ToBinaryDecoder); + + stream::CopyStream(base64Utf8ToBinaryStream, *value.Obj()); + } + } } @@ -39318,7 +39895,6 @@ GuiRemoteWindow vint idGetBounds = remoteMessages.RequestWindowGetBounds(); remoteMessages.Submit(); OnWindowBoundsUpdated(remoteMessages.RetrieveWindowGetBounds(idGetBounds)); - remoteMessages.ClearResponses(); } void GuiRemoteWindow::Opened() @@ -39903,21 +40479,6 @@ Licensed under https ://github.com/vczh-libraries/License namespace vl::presentation::remoteprotocol { - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton & value) - { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton&)#" - auto node = Ptr(new glr::json::JsonString); - switch (value) - { - case ::vl::presentation::remoteprotocol::IOMouseButton::Left: node->content.value = WString::Unmanaged(L"Left"); break; - case ::vl::presentation::remoteprotocol::IOMouseButton::Middle: node->content.value = WString::Unmanaged(L"Middle"); break; - case ::vl::presentation::remoteprotocol::IOMouseButton::Right: node->content.value = WString::Unmanaged(L"Right"); break; - default: CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); - } - return node; -#undef ERROR_MESSAGE_PREFIX - } - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeWindowListener::HitTestResult>(const ::vl::presentation::INativeWindowListener::HitTestResult & value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::INativeWindowListener::HitTestResult>(const ::vl::presentation::INativeWindowListener::HitTestResult&)#" @@ -39985,24 +40546,15 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType & value) + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton & value) { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType&)#" +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton&)#" auto node = Ptr(new glr::json::JsonString); switch (value) { - case ::vl::presentation::remoteprotocol::RendererType::FocusRectangle: node->content.value = WString::Unmanaged(L"FocusRectangle"); break; - case ::vl::presentation::remoteprotocol::RendererType::SolidBorder: node->content.value = WString::Unmanaged(L"SolidBorder"); break; - case ::vl::presentation::remoteprotocol::RendererType::SinkBorder: node->content.value = WString::Unmanaged(L"SinkBorder"); break; - case ::vl::presentation::remoteprotocol::RendererType::SinkSplitter: node->content.value = WString::Unmanaged(L"SinkSplitter"); break; - case ::vl::presentation::remoteprotocol::RendererType::SolidBackground: node->content.value = WString::Unmanaged(L"SolidBackground"); break; - case ::vl::presentation::remoteprotocol::RendererType::GradientBackground: node->content.value = WString::Unmanaged(L"GradientBackground"); break; - case ::vl::presentation::remoteprotocol::RendererType::InnerShadow: node->content.value = WString::Unmanaged(L"InnerShadow"); break; - case ::vl::presentation::remoteprotocol::RendererType::SolidLabel: node->content.value = WString::Unmanaged(L"SolidLabel"); break; - case ::vl::presentation::remoteprotocol::RendererType::Polygon: node->content.value = WString::Unmanaged(L"Polygon"); break; - case ::vl::presentation::remoteprotocol::RendererType::UnsupportedImageFrame: node->content.value = WString::Unmanaged(L"UnsupportedImageFrame"); break; - case ::vl::presentation::remoteprotocol::RendererType::UnsupportedColorizedText: node->content.value = WString::Unmanaged(L"UnsupportedColorizedText"); break; - case ::vl::presentation::remoteprotocol::RendererType::UnsupportedDocument: node->content.value = WString::Unmanaged(L"UnsupportedDocument"); break; + case ::vl::presentation::remoteprotocol::IOMouseButton::Left: node->content.value = WString::Unmanaged(L"Left"); break; + case ::vl::presentation::remoteprotocol::IOMouseButton::Middle: node->content.value = WString::Unmanaged(L"Middle"); break; + case ::vl::presentation::remoteprotocol::IOMouseButton::Right: node->content.value = WString::Unmanaged(L"Right"); break; default: CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); } return node; @@ -40098,6 +40650,50 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeImage::FormatType>(const ::vl::presentation::INativeImage::FormatType & value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::INativeImage::FormatType>(const ::vl::presentation::INativeImage::FormatType&)#" + auto node = Ptr(new glr::json::JsonString); + switch (value) + { + case ::vl::presentation::INativeImage::Bmp: node->content.value = WString::Unmanaged(L"Bmp"); break; + case ::vl::presentation::INativeImage::Gif: node->content.value = WString::Unmanaged(L"Gif"); break; + case ::vl::presentation::INativeImage::Icon: node->content.value = WString::Unmanaged(L"Icon"); break; + case ::vl::presentation::INativeImage::Jpeg: node->content.value = WString::Unmanaged(L"Jpeg"); break; + case ::vl::presentation::INativeImage::Png: node->content.value = WString::Unmanaged(L"Png"); break; + case ::vl::presentation::INativeImage::Tiff: node->content.value = WString::Unmanaged(L"Tiff"); break; + case ::vl::presentation::INativeImage::Wmp: node->content.value = WString::Unmanaged(L"Wmp"); break; + case ::vl::presentation::INativeImage::Unknown: node->content.value = WString::Unmanaged(L"Unknown"); break; + default: CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); + } + return node; +#undef ERROR_MESSAGE_PREFIX + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType & value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType&)#" + auto node = Ptr(new glr::json::JsonString); + switch (value) + { + case ::vl::presentation::remoteprotocol::RendererType::FocusRectangle: node->content.value = WString::Unmanaged(L"FocusRectangle"); break; + case ::vl::presentation::remoteprotocol::RendererType::SolidBorder: node->content.value = WString::Unmanaged(L"SolidBorder"); break; + case ::vl::presentation::remoteprotocol::RendererType::SinkBorder: node->content.value = WString::Unmanaged(L"SinkBorder"); break; + case ::vl::presentation::remoteprotocol::RendererType::SinkSplitter: node->content.value = WString::Unmanaged(L"SinkSplitter"); break; + case ::vl::presentation::remoteprotocol::RendererType::SolidBackground: node->content.value = WString::Unmanaged(L"SolidBackground"); break; + case ::vl::presentation::remoteprotocol::RendererType::GradientBackground: node->content.value = WString::Unmanaged(L"GradientBackground"); break; + case ::vl::presentation::remoteprotocol::RendererType::InnerShadow: node->content.value = WString::Unmanaged(L"InnerShadow"); break; + case ::vl::presentation::remoteprotocol::RendererType::SolidLabel: node->content.value = WString::Unmanaged(L"SolidLabel"); break; + case ::vl::presentation::remoteprotocol::RendererType::Polygon: node->content.value = WString::Unmanaged(L"Polygon"); break; + case ::vl::presentation::remoteprotocol::RendererType::ImageFrame: node->content.value = WString::Unmanaged(L"ImageFrame"); break; + case ::vl::presentation::remoteprotocol::RendererType::UnsupportedColorizedText: node->content.value = WString::Unmanaged(L"UnsupportedColorizedText"); break; + case ::vl::presentation::remoteprotocol::RendererType::UnsupportedDocument: node->content.value = WString::Unmanaged(L"UnsupportedDocument"); break; + default: CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); + } + return node; +#undef ERROR_MESSAGE_PREFIX + } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeCoordinate>(const ::vl::presentation::NativeCoordinate & value) { auto node = Ptr(new glr::json::JsonObject); @@ -40199,6 +40795,24 @@ namespace vl::presentation::remoteprotocol return node; } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowSizingConfig>(const ::vl::presentation::remoteprotocol::WindowSizingConfig & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"bounds", value.bounds); + ConvertCustomTypeToJsonField(node, L"clientBounds", value.clientBounds); + ConvertCustomTypeToJsonField(node, L"sizeState", value.sizeState); + ConvertCustomTypeToJsonField(node, L"customFramePadding", value.customFramePadding); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowShowing>(const ::vl::presentation::remoteprotocol::WindowShowing & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"activate", value.activate); + ConvertCustomTypeToJsonField(node, L"sizeState", value.sizeState); + return node; + } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeWindowMouseInfo>(const ::vl::presentation::NativeWindowMouseInfo & value) { auto node = Ptr(new glr::json::JsonObject); @@ -40256,24 +40870,6 @@ namespace vl::presentation::remoteprotocol return node; } - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowSizingConfig>(const ::vl::presentation::remoteprotocol::WindowSizingConfig & value) - { - auto node = Ptr(new glr::json::JsonObject); - ConvertCustomTypeToJsonField(node, L"bounds", value.bounds); - ConvertCustomTypeToJsonField(node, L"clientBounds", value.clientBounds); - ConvertCustomTypeToJsonField(node, L"sizeState", value.sizeState); - ConvertCustomTypeToJsonField(node, L"customFramePadding", value.customFramePadding); - return node; - } - - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowShowing>(const ::vl::presentation::remoteprotocol::WindowShowing & value) - { - auto node = Ptr(new glr::json::JsonObject); - ConvertCustomTypeToJsonField(node, L"activate", value.activate); - ConvertCustomTypeToJsonField(node, L"sizeState", value.sizeState); - return node; - } - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::elements::ElementShape>(const ::vl::presentation::elements::ElementShape & value) { auto node = Ptr(new glr::json::JsonObject); @@ -40368,6 +40964,45 @@ namespace vl::presentation::remoteprotocol return node; } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageCreation>(const ::vl::presentation::remoteprotocol::ImageCreation & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"id", value.id); + ConvertCustomTypeToJsonField(node, L"imageData", value.imageData); + ConvertCustomTypeToJsonField(node, L"imageDataOmitted", value.imageDataOmitted); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageFrameMetadata>(const ::vl::presentation::remoteprotocol::ImageFrameMetadata & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"size", value.size); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageMetadata>(const ::vl::presentation::remoteprotocol::ImageMetadata & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"id", value.id); + ConvertCustomTypeToJsonField(node, L"format", value.format); + ConvertCustomTypeToJsonField(node, L"frames", value.frames); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame>(const ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"id", value.id); + ConvertCustomTypeToJsonField(node, L"imageId", value.imageId); + ConvertCustomTypeToJsonField(node, L"imageFrame", value.imageFrame); + ConvertCustomTypeToJsonField(node, L"horizontalAlignment", value.horizontalAlignment); + ConvertCustomTypeToJsonField(node, L"verticalAlignment", value.verticalAlignment); + ConvertCustomTypeToJsonField(node, L"stretch", value.stretch); + ConvertCustomTypeToJsonField(node, L"enabled", value.enabled); + ConvertCustomTypeToJsonField(node, L"imageCreation", value.imageCreation); + return node; + } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererCreation>(const ::vl::presentation::remoteprotocol::RendererCreation & value) { auto node = Ptr(new glr::json::JsonObject); @@ -40376,12 +41011,19 @@ namespace vl::presentation::remoteprotocol return node; } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementBeginRendering>(const ::vl::presentation::remoteprotocol::ElementBeginRendering & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"frameId", value.frameId); + return node; + } + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementRendering>(const ::vl::presentation::remoteprotocol::ElementRendering & value) { auto node = Ptr(new glr::json::JsonObject); ConvertCustomTypeToJsonField(node, L"id", value.id); ConvertCustomTypeToJsonField(node, L"bounds", value.bounds); - ConvertCustomTypeToJsonField(node, L"clipper", value.clipper); + ConvertCustomTypeToJsonField(node, L"areaClippedByParent", value.areaClippedByParent); return node; } @@ -40389,8 +41031,9 @@ namespace vl::presentation::remoteprotocol { auto node = Ptr(new glr::json::JsonObject); ConvertCustomTypeToJsonField(node, L"hitTestResult", value.hitTestResult); + ConvertCustomTypeToJsonField(node, L"cursor", value.cursor); ConvertCustomTypeToJsonField(node, L"bounds", value.bounds); - ConvertCustomTypeToJsonField(node, L"clipper", value.clipper); + ConvertCustomTypeToJsonField(node, L"areaClippedBySelf", value.areaClippedBySelf); return node; } @@ -40416,19 +41059,62 @@ namespace vl::presentation::remoteprotocol auto node = Ptr(new glr::json::JsonObject); ConvertCustomTypeToJsonField(node, L"fontHeights", value.fontHeights); ConvertCustomTypeToJsonField(node, L"minSizes", value.minSizes); + ConvertCustomTypeToJsonField(node, L"createdImages", value.createdImages); return node; } - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(vl::Ptr node, ::vl::presentation::remoteprotocol::IOMouseButton& value) + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingDom>(const ::vl::presentation::remoteprotocol::RenderingDom & value) { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(Ptr, ::vl::presentation::remoteprotocol::IOMouseButton&)#" - auto jsonNode = node.Cast(); - CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); - if (jsonNode->content.value == L"Left") value = ::vl::presentation::remoteprotocol::IOMouseButton::Left; else - if (jsonNode->content.value == L"Middle") value = ::vl::presentation::remoteprotocol::IOMouseButton::Middle; else - if (jsonNode->content.value == L"Right") value = ::vl::presentation::remoteprotocol::IOMouseButton::Right; else - CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); -#undef ERROR_MESSAGE_PREFIX + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"hitTestResult", value.hitTestResult); + ConvertCustomTypeToJsonField(node, L"cursor", value.cursor); + ConvertCustomTypeToJsonField(node, L"element", value.element); + ConvertCustomTypeToJsonField(node, L"bounds", value.bounds); + ConvertCustomTypeToJsonField(node, L"validArea", value.validArea); + ConvertCustomTypeToJsonField(node, L"children", value.children); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary>(const ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"boundary", value.boundary); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary>(const ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary & value) + { + auto node = Ptr(new glr::json::JsonObject); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_Element>(const ::vl::presentation::remoteprotocol::RenderingCommand_Element & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"rendering", value.rendering); + ConvertCustomTypeToJsonField(node, L"element", value.element); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingFrame>(const ::vl::presentation::remoteprotocol::RenderingFrame & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"frameId", value.frameId); + ConvertCustomTypeToJsonField(node, L"frameName", value.frameName); + ConvertCustomTypeToJsonField(node, L"windowSize", value.windowSize); + ConvertCustomTypeToJsonField(node, L"elements", value.elements); + ConvertCustomTypeToJsonField(node, L"commands", value.commands); + ConvertCustomTypeToJsonField(node, L"root", value.root); + return node; + } + + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingTrace>(const ::vl::presentation::remoteprotocol::RenderingTrace & value) + { + auto node = Ptr(new glr::json::JsonObject); + ConvertCustomTypeToJsonField(node, L"createdElements", value.createdElements); + ConvertCustomTypeToJsonField(node, L"createdImages", value.createdImages); + ConvertCustomTypeToJsonField(node, L"frames", value.frames); + return node; } template<> void ConvertJsonToCustomType<::vl::presentation::INativeWindowListener::HitTestResult>(vl::Ptr node, ::vl::presentation::INativeWindowListener::HitTestResult& value) @@ -40489,23 +41175,14 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererType& value) + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(vl::Ptr node, ::vl::presentation::remoteprotocol::IOMouseButton& value) { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(Ptr, ::vl::presentation::remoteprotocol::RendererType&)#" +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(Ptr, ::vl::presentation::remoteprotocol::IOMouseButton&)#" auto jsonNode = node.Cast(); CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); - if (jsonNode->content.value == L"FocusRectangle") value = ::vl::presentation::remoteprotocol::RendererType::FocusRectangle; else - if (jsonNode->content.value == L"SolidBorder") value = ::vl::presentation::remoteprotocol::RendererType::SolidBorder; else - if (jsonNode->content.value == L"SinkBorder") value = ::vl::presentation::remoteprotocol::RendererType::SinkBorder; else - if (jsonNode->content.value == L"SinkSplitter") value = ::vl::presentation::remoteprotocol::RendererType::SinkSplitter; else - if (jsonNode->content.value == L"SolidBackground") value = ::vl::presentation::remoteprotocol::RendererType::SolidBackground; else - if (jsonNode->content.value == L"GradientBackground") value = ::vl::presentation::remoteprotocol::RendererType::GradientBackground; else - if (jsonNode->content.value == L"InnerShadow") value = ::vl::presentation::remoteprotocol::RendererType::InnerShadow; else - if (jsonNode->content.value == L"SolidLabel") value = ::vl::presentation::remoteprotocol::RendererType::SolidLabel; else - if (jsonNode->content.value == L"Polygon") value = ::vl::presentation::remoteprotocol::RendererType::Polygon; else - if (jsonNode->content.value == L"UnsupportedImageFrame") value = ::vl::presentation::remoteprotocol::RendererType::UnsupportedImageFrame; else - if (jsonNode->content.value == L"UnsupportedColorizedText") value = ::vl::presentation::remoteprotocol::RendererType::UnsupportedColorizedText; else - if (jsonNode->content.value == L"UnsupportedDocument") value = ::vl::presentation::remoteprotocol::RendererType::UnsupportedDocument; else + if (jsonNode->content.value == L"Left") value = ::vl::presentation::remoteprotocol::IOMouseButton::Left; else + if (jsonNode->content.value == L"Middle") value = ::vl::presentation::remoteprotocol::IOMouseButton::Middle; else + if (jsonNode->content.value == L"Right") value = ::vl::presentation::remoteprotocol::IOMouseButton::Right; else CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); #undef ERROR_MESSAGE_PREFIX } @@ -40581,6 +41258,44 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } + template<> void ConvertJsonToCustomType<::vl::presentation::INativeImage::FormatType>(vl::Ptr node, ::vl::presentation::INativeImage::FormatType& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::INativeImage::FormatType>(Ptr, ::vl::presentation::INativeImage::FormatType&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + if (jsonNode->content.value == L"Bmp") value = ::vl::presentation::INativeImage::Bmp; else + if (jsonNode->content.value == L"Gif") value = ::vl::presentation::INativeImage::Gif; else + if (jsonNode->content.value == L"Icon") value = ::vl::presentation::INativeImage::Icon; else + if (jsonNode->content.value == L"Jpeg") value = ::vl::presentation::INativeImage::Jpeg; else + if (jsonNode->content.value == L"Png") value = ::vl::presentation::INativeImage::Png; else + if (jsonNode->content.value == L"Tiff") value = ::vl::presentation::INativeImage::Tiff; else + if (jsonNode->content.value == L"Wmp") value = ::vl::presentation::INativeImage::Wmp; else + if (jsonNode->content.value == L"Unknown") value = ::vl::presentation::INativeImage::Unknown; else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererType& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(Ptr, ::vl::presentation::remoteprotocol::RendererType&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + if (jsonNode->content.value == L"FocusRectangle") value = ::vl::presentation::remoteprotocol::RendererType::FocusRectangle; else + if (jsonNode->content.value == L"SolidBorder") value = ::vl::presentation::remoteprotocol::RendererType::SolidBorder; else + if (jsonNode->content.value == L"SinkBorder") value = ::vl::presentation::remoteprotocol::RendererType::SinkBorder; else + if (jsonNode->content.value == L"SinkSplitter") value = ::vl::presentation::remoteprotocol::RendererType::SinkSplitter; else + if (jsonNode->content.value == L"SolidBackground") value = ::vl::presentation::remoteprotocol::RendererType::SolidBackground; else + if (jsonNode->content.value == L"GradientBackground") value = ::vl::presentation::remoteprotocol::RendererType::GradientBackground; else + if (jsonNode->content.value == L"InnerShadow") value = ::vl::presentation::remoteprotocol::RendererType::InnerShadow; else + if (jsonNode->content.value == L"SolidLabel") value = ::vl::presentation::remoteprotocol::RendererType::SolidLabel; else + if (jsonNode->content.value == L"Polygon") value = ::vl::presentation::remoteprotocol::RendererType::Polygon; else + if (jsonNode->content.value == L"ImageFrame") value = ::vl::presentation::remoteprotocol::RendererType::ImageFrame; else + if (jsonNode->content.value == L"UnsupportedColorizedText") value = ::vl::presentation::remoteprotocol::RendererType::UnsupportedColorizedText; else + if (jsonNode->content.value == L"UnsupportedDocument") value = ::vl::presentation::remoteprotocol::RendererType::UnsupportedDocument; else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported enum value."); +#undef ERROR_MESSAGE_PREFIX + } + template<> void ConvertJsonToCustomType<::vl::presentation::NativeCoordinate>(vl::Ptr node, ::vl::presentation::NativeCoordinate& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::NativeCoordinate>(Ptr, ::vl::presentation::NativeCoordinate&)#" @@ -40748,6 +41463,36 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowSizingConfig& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(Ptr, ::vl::presentation::remoteprotocol::WindowSizingConfig&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"bounds") ConvertJsonToCustomType(field->value, value.bounds); else + if (field->name.value == L"clientBounds") ConvertJsonToCustomType(field->value, value.clientBounds); else + if (field->name.value == L"sizeState") ConvertJsonToCustomType(field->value, value.sizeState); else + if (field->name.value == L"customFramePadding") ConvertJsonToCustomType(field->value, value.customFramePadding); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowShowing& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(Ptr, ::vl::presentation::remoteprotocol::WindowShowing&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"activate") ConvertJsonToCustomType(field->value, value.activate); else + if (field->name.value == L"sizeState") ConvertJsonToCustomType(field->value, value.sizeState); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + template<> void ConvertJsonToCustomType<::vl::presentation::NativeWindowMouseInfo>(vl::Ptr node, ::vl::presentation::NativeWindowMouseInfo& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::NativeWindowMouseInfo>(Ptr, ::vl::presentation::NativeWindowMouseInfo&)#" @@ -40835,36 +41580,6 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowSizingConfig& value) - { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(Ptr, ::vl::presentation::remoteprotocol::WindowSizingConfig&)#" - auto jsonNode = node.Cast(); - CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); - for (auto field : jsonNode->fields) - { - if (field->name.value == L"bounds") ConvertJsonToCustomType(field->value, value.bounds); else - if (field->name.value == L"clientBounds") ConvertJsonToCustomType(field->value, value.clientBounds); else - if (field->name.value == L"sizeState") ConvertJsonToCustomType(field->value, value.sizeState); else - if (field->name.value == L"customFramePadding") ConvertJsonToCustomType(field->value, value.customFramePadding); else - CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); - } -#undef ERROR_MESSAGE_PREFIX - } - - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowShowing& value) - { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(Ptr, ::vl::presentation::remoteprotocol::WindowShowing&)#" - auto jsonNode = node.Cast(); - CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); - for (auto field : jsonNode->fields) - { - if (field->name.value == L"activate") ConvertJsonToCustomType(field->value, value.activate); else - if (field->name.value == L"sizeState") ConvertJsonToCustomType(field->value, value.sizeState); else - CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); - } -#undef ERROR_MESSAGE_PREFIX - } - template<> void ConvertJsonToCustomType<::vl::presentation::elements::ElementShape>(vl::Ptr node, ::vl::presentation::elements::ElementShape& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::elements::ElementShape>(Ptr, ::vl::presentation::elements::ElementShape&)#" @@ -41013,6 +41728,69 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageCreation>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageCreation& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageCreation>(Ptr, ::vl::presentation::remoteprotocol::ImageCreation&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"id") ConvertJsonToCustomType(field->value, value.id); else + if (field->name.value == L"imageData") ConvertJsonToCustomType(field->value, value.imageData); else + if (field->name.value == L"imageDataOmitted") ConvertJsonToCustomType(field->value, value.imageDataOmitted); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageFrameMetadata>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageFrameMetadata& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageFrameMetadata>(Ptr, ::vl::presentation::remoteprotocol::ImageFrameMetadata&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"size") ConvertJsonToCustomType(field->value, value.size); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageMetadata>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageMetadata& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageMetadata>(Ptr, ::vl::presentation::remoteprotocol::ImageMetadata&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"id") ConvertJsonToCustomType(field->value, value.id); else + if (field->name.value == L"format") ConvertJsonToCustomType(field->value, value.format); else + if (field->name.value == L"frames") ConvertJsonToCustomType(field->value, value.frames); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame>(Ptr, ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"id") ConvertJsonToCustomType(field->value, value.id); else + if (field->name.value == L"imageId") ConvertJsonToCustomType(field->value, value.imageId); else + if (field->name.value == L"imageFrame") ConvertJsonToCustomType(field->value, value.imageFrame); else + if (field->name.value == L"horizontalAlignment") ConvertJsonToCustomType(field->value, value.horizontalAlignment); else + if (field->name.value == L"verticalAlignment") ConvertJsonToCustomType(field->value, value.verticalAlignment); else + if (field->name.value == L"stretch") ConvertJsonToCustomType(field->value, value.stretch); else + if (field->name.value == L"enabled") ConvertJsonToCustomType(field->value, value.enabled); else + if (field->name.value == L"imageCreation") ConvertJsonToCustomType(field->value, value.imageCreation); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererCreation>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererCreation& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererCreation>(Ptr, ::vl::presentation::remoteprotocol::RendererCreation&)#" @@ -41027,6 +41805,19 @@ namespace vl::presentation::remoteprotocol #undef ERROR_MESSAGE_PREFIX } + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementBeginRendering>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementBeginRendering& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementBeginRendering>(Ptr, ::vl::presentation::remoteprotocol::ElementBeginRendering&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"frameId") ConvertJsonToCustomType(field->value, value.frameId); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementRendering>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementRendering& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementRendering>(Ptr, ::vl::presentation::remoteprotocol::ElementRendering&)#" @@ -41036,7 +41827,7 @@ namespace vl::presentation::remoteprotocol { if (field->name.value == L"id") ConvertJsonToCustomType(field->value, value.id); else if (field->name.value == L"bounds") ConvertJsonToCustomType(field->value, value.bounds); else - if (field->name.value == L"clipper") ConvertJsonToCustomType(field->value, value.clipper); else + if (field->name.value == L"areaClippedByParent") ConvertJsonToCustomType(field->value, value.areaClippedByParent); else CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); } #undef ERROR_MESSAGE_PREFIX @@ -41050,8 +41841,9 @@ namespace vl::presentation::remoteprotocol for (auto field : jsonNode->fields) { if (field->name.value == L"hitTestResult") ConvertJsonToCustomType(field->value, value.hitTestResult); else + if (field->name.value == L"cursor") ConvertJsonToCustomType(field->value, value.cursor); else if (field->name.value == L"bounds") ConvertJsonToCustomType(field->value, value.bounds); else - if (field->name.value == L"clipper") ConvertJsonToCustomType(field->value, value.clipper); else + if (field->name.value == L"areaClippedBySelf") ConvertJsonToCustomType(field->value, value.areaClippedBySelf); else CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); } #undef ERROR_MESSAGE_PREFIX @@ -41095,6 +41887,97 @@ namespace vl::presentation::remoteprotocol { if (field->name.value == L"fontHeights") ConvertJsonToCustomType(field->value, value.fontHeights); else if (field->name.value == L"minSizes") ConvertJsonToCustomType(field->value, value.minSizes); else + if (field->name.value == L"createdImages") ConvertJsonToCustomType(field->value, value.createdImages); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingDom>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingDom& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingDom>(Ptr, ::vl::presentation::remoteprotocol::RenderingDom&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"hitTestResult") ConvertJsonToCustomType(field->value, value.hitTestResult); else + if (field->name.value == L"cursor") ConvertJsonToCustomType(field->value, value.cursor); else + if (field->name.value == L"element") ConvertJsonToCustomType(field->value, value.element); else + if (field->name.value == L"bounds") ConvertJsonToCustomType(field->value, value.bounds); else + if (field->name.value == L"validArea") ConvertJsonToCustomType(field->value, value.validArea); else + if (field->name.value == L"children") ConvertJsonToCustomType(field->value, value.children); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary>(Ptr, ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"boundary") ConvertJsonToCustomType(field->value, value.boundary); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary>(Ptr, ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_Element>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_Element& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_Element>(Ptr, ::vl::presentation::remoteprotocol::RenderingCommand_Element&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"rendering") ConvertJsonToCustomType(field->value, value.rendering); else + if (field->name.value == L"element") ConvertJsonToCustomType(field->value, value.element); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingFrame>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingFrame& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingFrame>(Ptr, ::vl::presentation::remoteprotocol::RenderingFrame&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"frameId") ConvertJsonToCustomType(field->value, value.frameId); else + if (field->name.value == L"frameName") ConvertJsonToCustomType(field->value, value.frameName); else + if (field->name.value == L"windowSize") ConvertJsonToCustomType(field->value, value.windowSize); else + if (field->name.value == L"elements") ConvertJsonToCustomType(field->value, value.elements); else + if (field->name.value == L"commands") ConvertJsonToCustomType(field->value, value.commands); else + if (field->name.value == L"root") ConvertJsonToCustomType(field->value, value.root); else + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); + } +#undef ERROR_MESSAGE_PREFIX + } + + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingTrace>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingTrace& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingTrace>(Ptr, ::vl::presentation::remoteprotocol::RenderingTrace&)#" + auto jsonNode = node.Cast(); + CHECK_ERROR(jsonNode, ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + for (auto field : jsonNode->fields) + { + if (field->name.value == L"createdElements") ConvertJsonToCustomType(field->value, value.createdElements); else + if (field->name.value == L"createdImages") ConvertJsonToCustomType(field->value, value.createdImages); else + if (field->name.value == L"frames") ConvertJsonToCustomType(field->value, value.frames); else CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Unsupported struct member."); } #undef ERROR_MESSAGE_PREFIX @@ -46048,16 +46931,22 @@ IGuiParserManager { } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - parserManager = this; - SetParser(L"XML", Ptr(new GuiParser_Xml())); - SetParser(L"JSON", Ptr(new GuiParser_Json())); + if (controllerUnrelatedPlugins) + { + parserManager = this; + SetParser(L"XML", Ptr(new GuiParser_Xml())); + SetParser(L"JSON", Ptr(new GuiParser_Json())); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - parserManager=0; + if (controllerUnrelatedPlugins) + { + parserManager = nullptr; + } } Ptr GetParser(const WString& name)override @@ -46095,36 +46984,48 @@ GuiPluginManager { protected: List> plugins; - bool loaded; + bool controllerRelatedLoaded = false; + bool controllerUnrelatedLoaded = false; public: GuiPluginManager() - :loaded(false) { } ~GuiPluginManager() { - Unload(); } void AddPlugin(Ptr plugin)override { - CHECK_ERROR(!loaded, L"GuiPluginManager::AddPlugin(Ptr)#Load function has already been executed."); +#define ERROR_MESSAGE_PREFIX L"GuiPluginManager::AddPlugin(Ptr)#" + CHECK_ERROR(!controllerUnrelatedLoaded, ERROR_MESSAGE_PREFIX L"Load function has already been executed."); auto name = plugin->GetName(); if (name != L"") { for (auto plugin : plugins) { - CHECK_ERROR(plugin->GetName() != name, L"GuiPluginManager::AddPlugin(Ptr)#Duplicated plugin name."); + CHECK_ERROR(plugin->GetName() != name, ERROR_MESSAGE_PREFIX L"Duplicated plugin name."); } } plugins.Add(plugin); +#undef ERROR_MESSAGE_PREFIX } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - CHECK_ERROR(!loaded, L"GuiPluginManager::AddPlugin(Ptr)#Load function has already been executed."); - loaded=true; +#define ERROR_MESSAGE_PREFIX L"GuiPluginManager::Load(bool, bool)#" + CHECK_ERROR(controllerUnrelatedPlugins || controllerRelatedPlugins, L"At least one of the parameters should be true."); + if (controllerUnrelatedPlugins) + { + CHECK_ERROR(!controllerUnrelatedLoaded, ERROR_MESSAGE_PREFIX L"A second Load(true, *) could only be called after Unload(true, *)."); + controllerUnrelatedLoaded = true; + } + if (controllerRelatedPlugins) + { + CHECK_ERROR(controllerUnrelatedLoaded, ERROR_MESSAGE_PREFIX L"Load(*, true) could only be called between Load(true, *) and Unload(true, *)."); + CHECK_ERROR(!controllerRelatedLoaded, ERROR_MESSAGE_PREFIX L"A second Load(*, true) could only be called after Unload(*, true)."); + controllerRelatedLoaded = true; + } SortedList loaded; Group loading; @@ -46159,7 +47060,7 @@ GuiPluginManager auto plugin = pluginsToLoad.Values()[index]; pluginsToLoad.Remove(name); - plugin->Load(); + plugin->Load(controllerUnrelatedPlugins, controllerRelatedPlugins); break; } } @@ -46185,21 +47086,41 @@ GuiPluginManager throw Exception(message); } } +#undef ERROR_MESSAGE_PREFIX } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - CHECK_ERROR(loaded, L"GuiPluginManager::AddPlugin(Ptr)#Load function has not been executed."); - loaded=false; +#define ERROR_MESSAGE_PREFIX L"GuiPluginManager::Unload(bool, bool)#" + CHECK_ERROR(controllerUnrelatedPlugins || controllerRelatedPlugins, L"At least one of the parameters should be true."); + if (controllerRelatedPlugins) + { + CHECK_ERROR(controllerUnrelatedLoaded, ERROR_MESSAGE_PREFIX L"Unload(*, true) could only be called between Load(true, *) and Unload(true, *)."); + CHECK_ERROR(controllerRelatedLoaded, ERROR_MESSAGE_PREFIX L"Unload(*, true) could only be called after Load(*, true)."); + controllerRelatedLoaded = false; + } + if (controllerUnrelatedPlugins) + { + CHECK_ERROR(controllerUnrelatedLoaded, ERROR_MESSAGE_PREFIX L"Unload(true, *) could only be called after Load(true, *)."); + CHECK_ERROR(!controllerRelatedLoaded, ERROR_MESSAGE_PREFIX L"Unload(true, *) could only be called after Load(*, true)."); + controllerUnrelatedLoaded = false; + } + for (auto plugin : plugins) { - plugin->Unload(); + plugin->Unload(controllerUnrelatedPlugins, controllerRelatedPlugins); } +#undef ERROR_MESSAGE_PREFIX } - bool IsLoaded()override + bool IsControllerRelatedPluginsLoaded()override { - return loaded; + return controllerRelatedLoaded; + } + + bool IsControllerUnrelatedPluginsLoaded()override + { + return controllerUnrelatedLoaded; } }; @@ -46238,6 +47159,9 @@ Helpers { if (pluginManager) { + CHECK_ERROR( + !pluginManager->IsControllerRelatedPluginsLoaded() && !pluginManager->IsControllerUnrelatedPluginsLoaded(), + L"vl::presentation::DestroyPluginManager()#Plugins have not been unloaded."); delete pluginManager; pluginManager = nullptr; } @@ -47540,7 +48464,7 @@ GuiResource GuiResource::GuiResource() { metadata = Ptr(new GuiResourceMetadata); - metadata->version = CurrentVersionString; + metadata->version = WString::Unmanaged(CurrentVersionString); } GuiResource::~GuiResource() @@ -47619,7 +48543,7 @@ GuiResource if (resource->metadata->version != CurrentVersionString) { - errors.Add(GuiResourceError({ resource }, L"Only resource binary of version \"" + WString(CurrentVersionString) + L"\" is accepted. Please recompile the resource before loading it.")); + errors.Add(GuiResourceError({ resource }, L"Only resource binary of version \"" + WString::Unmanaged(CurrentVersionString) + L"\" is accepted. Please recompile the resource before loading it.")); return nullptr; } } @@ -47940,21 +48864,27 @@ IGuiResourceResolverManager { } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - globalStringKeyManager = new GlobalStringKeyManager(); - globalStringKeyManager->InitializeConstants(); + if (controllerUnrelatedPlugins) + { + globalStringKeyManager = new GlobalStringKeyManager(); + globalStringKeyManager->InitializeConstants(); - resourceResolverManager = this; - SetPathResolverFactory(Ptr(new GuiResourcePathResResolver::Factory)); - SetPathResolverFactory(Ptr(new GuiImportResourcePathResResolver::Factory)); + resourceResolverManager = this; + SetPathResolverFactory(Ptr(new GuiResourcePathResResolver::Factory)); + SetPathResolverFactory(Ptr(new GuiImportResourcePathResResolver::Factory)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - delete globalStringKeyManager; - globalStringKeyManager = 0; - resourceResolverManager = 0; + if (controllerUnrelatedPlugins) + { + delete globalStringKeyManager; + globalStringKeyManager = nullptr; + resourceResolverManager = nullptr; + } } IGuiResourcePathResolverFactory* GetPathResolverFactory(const WString& protocol)override @@ -48158,16 +49088,25 @@ IGuiInstanceResourceManager GUI_PLUGIN_DEPEND(GacUI_Res_ResourceResolver); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - resourceManager = this; - IGuiResourceResolverManager* manager = GetResourceResolverManager(); - manager->SetTypeResolver(Ptr(new GuiResourceClassNameRecordTypeResolver)); + if (controllerRelatedPlugins) + { + resourceManager = this; + IGuiResourceResolverManager* manager = GetResourceResolverManager(); + manager->SetTypeResolver(Ptr(new GuiResourceClassNameRecordTypeResolver)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - resourceManager = nullptr; + if (controllerRelatedPlugins) + { + anonymousResources.Clear(); + resources.Clear(); + instanceResources.Clear(); + resourceManager = nullptr; + } } void SetResource(Ptr resource, GuiResourceError::List& errors, GuiResourceUsage usage)override @@ -48228,7 +49167,8 @@ IGuiInstanceResourceManager Ptr GetResource(const WString& name)override { vint index = resources.Keys().IndexOf(name); - return index == -1 ? nullptr : resources.Values()[index]; + if (index == -1) return nullptr; + return resources.Values()[index]; } Ptr GetResourceFromClassName(const WString& classFullName)override @@ -48238,22 +49178,48 @@ IGuiInstanceResourceManager return instanceResources.Values()[index]; } - void UnloadResource(const WString& name)override + LazyList> GetLoadedResources()override { - vint index = resources.Keys().IndexOf(name); - if (index != -1) + return From(anonymousResources).Concat(resources.Values()); + } + + bool UnloadResource(const WString& name)override + { + return UnloadResource(GetResource(name)); + } + + bool UnloadResource(Ptr resource)override + { + if (!resource) return false; + + WString name; + if (auto metadata = resource->GetMetadata()) { + name = metadata->name; + } + + if (name == WString::Empty) + { + vint index = anonymousResources.IndexOf(resource.Obj()); + if (index == -1) return false; + anonymousResources.RemoveAt(index); + } + else + { + vint index = resources.Keys().IndexOf(name); + if (index == -1) return false; auto resource = resources.Values()[index]; resources.Remove(name); + } - if (auto record = resource->GetValueByPath(L"Precompiled/ClassNameRecord").Cast()) + if (auto record = resource->GetValueByPath(L"Precompiled/ClassNameRecord").Cast()) + { + for (auto className : record->classNames) { - for (auto className : record->classNames) - { - instanceResources.Remove(className); - } + instanceResources.Remove(className); } } + return true; } void LoadResourceOrPending(stream::IStream& resourceStream, GuiResourceError::List& errors, GuiResourceUsage usage)override @@ -48677,16 +49643,19 @@ Type Resolver Plugin GUI_PLUGIN_DEPEND(GacUI_Res_ResourceResolver); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - IGuiResourceResolverManager* manager=GetResourceResolverManager(); - manager->SetTypeResolver(Ptr(new GuiResourceImageTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceTextTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceXmlTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceDocTypeResolver)); + if (controllerUnrelatedPlugins) + { + IGuiResourceResolverManager* manager = GetResourceResolverManager(); + manager->SetTypeResolver(Ptr(new GuiResourceImageTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceTextTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceXmlTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceDocTypeResolver)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -50179,7 +51148,7 @@ FakeDialogService /*********************************************************************** !!!!!! DO NOT MODIFY !!!!!! -GacGen.exe Resource.xml +Source: GacUI FakeDialogServiceUI This file is generated by Workflow compiler https://github.com/vczh-libraries @@ -55721,6 +56690,7 @@ namespace gaclib_controls } { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { @@ -55739,6 +56709,7 @@ namespace gaclib_controls { (this->tracker = new ::vl::presentation::controls::GuiScroll(::vl::presentation::theme::ThemeName::HTracker)); ::vl::__vwsn::This(this->tracker)->SetPageSize(static_cast<::vl::vint>(0)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"tracker"), ::vl::__vwsn::Box(this->tracker)); } { ::vl::__vwsn::This(this->tracker)->SetBigMove(static_cast<::vl::vint>(16)); @@ -55931,6 +56902,7 @@ Class (::gaclib_controls::ColorDialogControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_9)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->colorRed = new ::gaclib_controls::ColorComponentControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorRed"), ::vl::__vwsn::Box(this->colorRed)); { ::vl::__vwsn::This(this->colorRed)->SetTextBoxAlt(::vl::WString::Unmanaged(L"R")); } @@ -55949,6 +56921,7 @@ Class (::gaclib_controls::ColorDialogControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_11)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->colorGreen = new ::gaclib_controls::ColorComponentControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorGreen"), ::vl::__vwsn::Box(this->colorGreen)); { ::vl::__vwsn::This(this->colorGreen)->SetTextBoxAlt(::vl::WString::Unmanaged(L"G")); } @@ -55967,6 +56940,7 @@ Class (::gaclib_controls::ColorDialogControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_13)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->colorBlue = new ::gaclib_controls::ColorComponentControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorBlue"), ::vl::__vwsn::Box(this->colorBlue)); { ::vl::__vwsn::This(this->colorBlue)->SetTextBoxAlt(::vl::WString::Unmanaged(L"B")); } @@ -56176,6 +57150,7 @@ Class (::gaclib_controls::ColorDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); } (this->colorControl = new ::gaclib_controls::ColorDialogControl(this->ViewModel)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorControl"), ::vl::__vwsn::Box(this->colorControl)); (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->colorControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -56400,6 +57375,7 @@ Class (::gaclib_controls::FileDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); } (this->filePickerControl = new ::gaclib_controls::FilePickerControl(this->ViewModel)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"filePickerControl"), ::vl::__vwsn::Box(this->filePickerControl)); (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->filePickerControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -56416,6 +57392,7 @@ Class (::gaclib_controls::FileDialogWindowConstructor) } { (this->buttonOK = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonOK"), ::vl::__vwsn::Box(this->buttonOK)); } (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->buttonOK)->GetBoundsComposition()); { @@ -56644,6 +57621,7 @@ Class (::gaclib_controls::FilePickerControlConstructor) } { (this->treeView = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeView"), ::vl::__vwsn::Box(this->treeView)); } { ::vl::__vwsn::This(this->treeView)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf26_GuiFakeDialogServiceUI_gaclib_controls_FilePickerControlConstructor___vwsn_gaclib_controls_FilePickerControl_Initialize_(this))); @@ -56676,6 +57654,7 @@ Class (::gaclib_controls::FilePickerControlConstructor) } { (this->dataGrid = new ::vl::presentation::controls::GuiBindableDataGrid(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dataGrid"), ::vl::__vwsn::Box(this->dataGrid)); } (this->__vwsn_precompile_12 = ::vl::__vwsn::This(this->dataGrid)->GetFocusableComposition()); { @@ -56764,6 +57743,7 @@ Class (::gaclib_controls::FilePickerControlConstructor) } { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->textBox)->GetFocusableComposition()); (this->__vwsn_precompile_19 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); @@ -56797,6 +57777,7 @@ Class (::gaclib_controls::FilePickerControlConstructor) } { (this->comboBox = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_22))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } (this->__vwsn_precompile_23 = ::vl::__vwsn::This(this->comboBox)->GetBoundsComposition()); { @@ -57069,6 +58050,7 @@ Class (::gaclib_controls::FontNameControlConstructor) } { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { @@ -57089,6 +58071,7 @@ Class (::gaclib_controls::FontNameControlConstructor) } { (this->textList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetHorizontalAlwaysVisible(false); @@ -57292,6 +58275,7 @@ Class (::gaclib_controls::FontSizeControlConstructor) } { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { @@ -57312,6 +58296,7 @@ Class (::gaclib_controls::FontSizeControlConstructor) } { (this->textList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetHorizontalAlwaysVisible(false); @@ -57550,6 +58535,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(3), static_cast<::vl::vint>(1)); } (this->nameControl = new ::gaclib_controls::FontNameControl(::vl::Ptr<::vl::presentation::ICommonFontDialogViewModel>(this->ViewModel))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"nameControl"), ::vl::__vwsn::Box(this->nameControl)); (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->nameControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -57565,6 +58551,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->sizeControl = new ::gaclib_controls::FontSizeControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sizeControl"), ::vl::__vwsn::Box(this->sizeControl)); (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->sizeControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -57599,6 +58586,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkBold = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkBold"), ::vl::__vwsn::Box(this->checkBold)); } { ::vl::__vwsn::This(this->checkBold)->SetAlt(::vl::WString::Unmanaged(L"B")); @@ -57612,6 +58600,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_11 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkItalic = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkItalic"), ::vl::__vwsn::Box(this->checkItalic)); } { ::vl::__vwsn::This(this->checkItalic)->SetAlt(::vl::WString::Unmanaged(L"I")); @@ -57625,6 +58614,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkUnderline = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkUnderline"), ::vl::__vwsn::Box(this->checkUnderline)); } { ::vl::__vwsn::This(this->checkUnderline)->SetAlt(::vl::WString::Unmanaged(L"U")); @@ -57638,6 +58628,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_13 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkStrikeline = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkStrikeline"), ::vl::__vwsn::Box(this->checkStrikeline)); } { ::vl::__vwsn::This(this->checkStrikeline)->SetAlt(::vl::WString::Unmanaged(L"U")); @@ -57651,6 +58642,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_14 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkHAA = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkHAA"), ::vl::__vwsn::Box(this->checkHAA)); } { ::vl::__vwsn::This(this->checkHAA)->SetAlt(::vl::WString::Unmanaged(L"H")); @@ -57664,6 +58656,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) (this->__vwsn_precompile_15 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkVAA = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkVAA"), ::vl::__vwsn::Box(this->checkVAA)); } { ::vl::__vwsn::This(this->checkVAA)->SetAlt(::vl::WString::Unmanaged(L"V")); @@ -57695,6 +58688,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_21)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } (this->colorBounds = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorBounds"), ::vl::__vwsn::Box(this->colorBounds)); { ::vl::__vwsn::This(this->colorBounds)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.y = static_cast<::vl::vint>(20); return __vwsn_temp__; }()); } @@ -57716,6 +58710,7 @@ Class (::gaclib_controls::FullFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } (this->colorBackground = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"colorBackground"), ::vl::__vwsn::Box(this->colorBackground)); { ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->colorBackground)); } @@ -58063,6 +59058,7 @@ Class (::gaclib_controls::MessageBoxButtonTemplateConstructor) } { (this->buttonControl = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonControl"), ::vl::__vwsn::Box(this->buttonControl)); } (this->__vwsn_precompile_0 = ::vl::__vwsn::This(this->buttonControl)->GetBoundsComposition()); { @@ -58431,6 +59427,7 @@ Class (::gaclib_controls::MessageBoxWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_14)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->buttonStack = new ::vl::presentation::compositions::GuiRepeatStackComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonStack"), ::vl::__vwsn::Box(this->buttonStack)); { ::vl::__vwsn::This(this->buttonStack)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf89_GuiFakeDialogServiceUI_gaclib_controls_MessageBoxWindowConstructor___vwsn_gaclib_controls_MessageBoxWindow_Initialize_(this))); } @@ -58628,6 +59625,7 @@ Class (::gaclib_controls::SimpleFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->nameControl = new ::gaclib_controls::FontNameControl(::vl::Ptr<::vl::presentation::ICommonFontDialogViewModel>(this->ViewModel))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"nameControl"), ::vl::__vwsn::Box(this->nameControl)); (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->nameControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -58643,6 +59641,7 @@ Class (::gaclib_controls::SimpleFontDialogWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->sizeControl = new ::gaclib_controls::FontSizeControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sizeControl"), ::vl::__vwsn::Box(this->sizeControl)); (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->sizeControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_6)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -58981,16 +59980,19 @@ namespace vl #endif } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - List errors; - MemoryStream resourceStream; - GuiFakeDialogServiceUIResourceReader::ReadToStream(resourceStream); - resourceStream.SeekFromBegin(0); - GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + if (controllerRelatedPlugins) + { + List errors; + MemoryStream resourceStream; + GuiFakeDialogServiceUIResourceReader::ReadToStream(resourceStream); + resourceStream.SeekFromBegin(0); + GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; diff --git a/Import/GacUI.h b/Import/GacUI.h index f4c7ded1..443a5440 100644 --- a/Import/GacUI.h +++ b/Import/GacUI.h @@ -294,47 +294,47 @@ Rectangle GUI_DEFINE_COMPARE_OPERATORS(Rect_) - Point_ LeftTop()const + Point_ LeftTop() const { return Point_(x1, y1); } - Point_ RightBottom()const + Point_ RightBottom() const { return Point_(x2, y2); } - Size_ GetSize()const + Size_ GetSize() const { return Size_(x2 - x1, y2 - y1); } - T Left()const + T Left() const { return x1; } - T Right()const + T Right() const { return x2; } - T Width()const + T Width() const { return x2 - x1; } - T Top()const + T Top() const { return y1; } - T Bottom()const + T Bottom() const { return y2; } - T Height()const + T Height() const { return y2 - y1; } @@ -371,10 +371,25 @@ Rectangle y2 += s.y; } - bool Contains(Point_ p) + bool Contains(Point_ p) const { return x1 <= p.x && p.x < x2 && y1 <= p.y && p.y < y2; } + + bool Contains(Rect_ r) const + { + return x1 <= r.x1 && r.x2 <= x2 && y1 <= r.y1 && r.y2 <= y2; + } + + Rect_ Intersect(Rect_ r) const + { + Rect_ result = r; + if (r.x1 < x1) r.x1 = x1; + if (r.x2 > x2) r.x2 = x2; + if (r.y1 < y1) r.y1 = y1; + if (r.y2 > y2) r.y2 = y2; + return r; + } }; using Rect = Rect_; @@ -2930,6 +2945,7 @@ INativeWindowService /// /// The frame configuration for non-main windows. virtual const NativeWindowFrameConfig& GetNonMainWindowFrameConfig()=0; + /// /// Create a window. /// @@ -3442,6 +3458,29 @@ Native Window Controller extern INativeServiceSubstitution* GetNativeServiceSubstitution(); +/*********************************************************************** +NativeImageFrameBase +***********************************************************************/ + + /// + /// A partial implementation for . + /// + class NativeImageFrameBase : public Object, public virtual INativeImageFrame + { + collections::Dictionary> caches; + public: + NativeImageFrameBase(); + ~NativeImageFrameBase(); + + bool SetCache(void* key, Ptr cache) override; + Ptr GetCache(void* key) override; + Ptr RemoveCache(void* key) override; + }; + +/*********************************************************************** +Helper Functions +***********************************************************************/ + /// /// Get a cursor according to the hit test result. /// @@ -4177,7 +4216,7 @@ Basic Construction void UpdateRelatedHostRecord(GraphicsHostRecord* record); void SetAssociatedControl(controls::GuiControl* control); - void InvokeOnCompositionStateChanged(); + void InvokeOnCompositionStateChanged(bool forceRequestRender = false); private: static bool SharedPtrDestructorProc(DescriptableObject* obj, bool forceDisposing); @@ -6979,7 +7018,7 @@ Helpers IGuiGraphicsRendererFactory* factory; TElement* element; - TRenderTarget* renderTarget; + TRenderTarget* renderTarget; Size minSize; public: @@ -7110,6 +7149,45 @@ Helpers #endif +/*********************************************************************** +.\PLATFORMPROVIDERS\HOSTED\GUIHOSTEDAPPLICATION.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Hosted Application + +Interfaces: + GuiHostedController + +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIHOSTEDCONTROLLER_GUIHOSTEDAPPLICATION +#define VCZH_PRESENTATION_GUIHOSTEDCONTROLLER_GUIHOSTEDAPPLICATION + + +namespace vl::presentation +{ +/*********************************************************************** +IGuiHostedApplication +***********************************************************************/ + + /// + /// + /// + class IGuiHostedApplication : public virtual Interface + { + public: + + virtual INativeWindow* GetNativeWindowHost() = 0; + }; + + extern IGuiHostedApplication* GetHostedApplication(); + extern void SetHostedApplication(IGuiHostedApplication* _hostedApp); +} + +#endif + /*********************************************************************** .\PLATFORMPROVIDERS\HOSTED\GUIHOSTEDGRAPHICS.H ***********************************************************************/ @@ -8060,9 +8138,13 @@ Plugin /// To receive all dependencies. virtual void GetDependencies(collections::List& dependencies) = 0; /// Called when the plugin manager want to load this plugin. - virtual void Load()=0; + /// A plugin only loads when it does not use anything from a . + /// A plugin only loads when it use anything from a . + virtual void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)=0; /// Called when the plugin manager want to unload this plugin. - virtual void Unload()=0; + /// A plugin only unloads when it does not use anything from a . + /// A plugin only unloads when it use anything from a . + virtual void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)=0; }; /// Represents a plugin manager. @@ -8073,11 +8155,17 @@ Plugin /// The plugin. virtual void AddPlugin(Ptr plugin)=0; /// Load all plugins, and check if dependencies of all plugins are ready. - virtual void Load()=0; + /// Load plugins that does not use anything from a . + /// Load plugins that it use anything from a . + virtual void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)=0; /// Unload all plugins. - virtual void Unload()=0; - /// Returns true if all plugins are loaded. - virtual bool IsLoaded()=0; + /// Unload plugins that does not use anything from a . + /// Unload plugins that it use anything from a . + virtual void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)=0; + /// Returns true if all controller related plugins are loaded. + virtual bool IsControllerRelatedPluginsLoaded()=0; + /// Returns true if all controller unrelated plugins are loaded. + virtual bool IsControllerUnrelatedPluginsLoaded()=0; }; /*********************************************************************** @@ -9026,9 +9114,11 @@ Root Object class GuiInstanceRootObject abstract : public Description { friend class RootObjectTimerCallback; - typedef collections::List> SubscriptionList; + using SubscriptionList = collections::List>; + using ObjectMap = collections::Dictionary; protected: Ptr resourceResolver; + ObjectMap namedObjects; SubscriptionList subscriptions; collections::SortedList components; Ptr timerCallback; @@ -9093,6 +9183,20 @@ Root Object /// Returns true if this operation succeeded. /// The animation. bool KillAnimation(Ptr animation); + + /// + /// Get the object by name, which is set by . + /// + /// The name of the object. + /// The object. Returns null if the name is not taken. + reflection::description::Value GetNamedObject(const WString& name); + + /// + /// Set an object with a name. If the name has been taken, the previous object will be replaced. + /// + /// The name of the object. + /// The object. + void SetNamedObject(const WString& name, const reflection::description::Value& namedObject); }; } } @@ -9716,6 +9820,8 @@ Basic Construction /// The theme name for retriving a default control template. GuiCustomControl(theme::ThemeName themeName); ~GuiCustomControl(); + + using GuiControl::SetFocusableComposition; }; template @@ -9776,6 +9882,76 @@ Basic Construction #define GUI_SPECIFY_CONTROL_TEMPLATE_TYPE(TEMPLATE, BASE_TYPE) GUI_SPECIFY_CONTROL_TEMPLATE_TYPE_2(TEMPLATE, BASE_TYPE, GUI_GENERATE_CONTROL_TEMPLATE_OBJECT_NAME) +/*********************************************************************** +Helper Functions +***********************************************************************/ + + template + T* TryFindObjectByName(GuiInstanceRootObject* rootObject, const WString& name) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::TryFindObjectByName(GuiInstanceRootObject*, const WString&)#" + CHECK_ERROR(rootObject, ERROR_MESSAGE_PREFIX L"rootObject should not be null."); + if (auto rawPtr = rootObject->GetNamedObject(name).GetRawPtr()) + { + auto typedObject = rawPtr->SafeAggregationCast(); + CHECK_ERROR(typedObject, ERROR_MESSAGE_PREFIX L"The object assigned by the name is not in the specified type."); + return typedObject; + } + return nullptr; +#undef ERROR_MESSAGE_PREFIX + } + + template + T* FindObjectByName(GuiInstanceRootObject* rootObject, const WString& name) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::FindObjectByName(GuiInstanceRootObject*, const WString&)#" + CHECK_ERROR(rootObject, ERROR_MESSAGE_PREFIX L"rootObject should not be null."); + auto value = rootObject->GetNamedObject(name); + CHECK_ERROR(!value.IsNull(), ERROR_MESSAGE_PREFIX L"The name has not been used."); + CHECK_ERROR(value.GetRawPtr(), ERROR_MESSAGE_PREFIX L"The object assigned by the name is not a class."); + auto rawPtr = value.GetRawPtr()->SafeAggregationCast(); + CHECK_ERROR(rawPtr, ERROR_MESSAGE_PREFIX L"The object assigned by the name is not in the specified type."); + return rawPtr; +#undef ERROR_MESSAGE_PREFIX + } + + template + requires(std::is_base_of_v) + T* TryFindControlByText(GuiControl* rootObject, const WString& text) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::TryFindControlByText(GuiControl*, const WString&)#" + CHECK_ERROR(rootObject, ERROR_MESSAGE_PREFIX L"rootObject should not be null."); + if (rootObject->GetText() == text) + { + auto typedObject = dynamic_cast(rootObject); + CHECK_ERROR(typedObject, ERROR_MESSAGE_PREFIX L"The object with the specified text is not in the specified type."); + return typedObject; + } + + vint count = rootObject->GetChildrenCount(); + for (vint i = 0; i < count; i++) + { + if (auto result = TryFindControlByText(rootObject->GetChild(i), text)) + { + return result; + } + } + return nullptr; +#undef ERROR_MESSAGE_PREFIX + } + + template + requires(std::is_base_of_v) + T* FindControlByText(GuiControl* rootObject, const WString& text) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::controls::FindControlByText(GuiControl*, const WString&)#" + if (auto result = TryFindControlByText(rootObject, text)) + { + return result; + } + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"The control with the specified text does not exist."); +#undef ERROR_MESSAGE_PREFIX + } } } } @@ -10096,6 +10272,7 @@ Window void UpdateIcon(INativeWindow* window, templates::GuiWindowTemplate* ct); void UpdateCustomFramePadding(INativeWindow* window, templates::GuiWindowTemplate* ct); + bool IsRenderedAsMaximized(); void SetControlTemplateProperties(); void SetNativeWindowFrameProperties(); bool ApplyFrameConfigOnVariable(BoolOption frameConfig, BoolOption templateConfig, bool& variable); @@ -10528,8 +10705,8 @@ Helper Functions extern void GuiApplicationMain(); -#define GUI_VALUE(x) vl::presentation::controls::GetApplication()->RunGuiValue(LAMBDA([&](){return (x);})) -#define GUI_RUN(x) vl::presentation::controls::GetApplication()->RunGuiTask([=](){x}) +#define GUI_VALUE(HOST, VALUE) vl::presentation::controls::GetApplication()->RunGuiValue((HOST), vl::Func([&](){return (VALUE);})) +#define GUI_RUN(HOST, VALUE) vl::presentation::controls::GetApplication()->RunGuiTask((HOST), [&](){(VALUE);}) #endif @@ -21447,6 +21624,26 @@ Interfaces: namespace vl::presentation::remoteprotocol { + template + struct JsonNameHelper; + + template + struct ArrayMap + { + using KK = typename KeyType::Type; + collections::Dictionary map; + + auto&& Keys() const { return map.Keys(); } + auto&& Values() const { return map.Values(); } + vint Count() const { return map.Count(); } + const TValue& Get(const KK& key) const { return map.Get(key); } + const TValue& operator[](const KK& key) const { return map[key]; } + + bool Add(const TValue& value) { return map.Add(value.*Field, value); } + bool Remove(const KK& key) { return map.Remove(key); } + bool Clear() { return map.Clear(); } + }; + template struct JsonHelper { @@ -21468,6 +21665,7 @@ namespace vl::presentation::remoteprotocol template<> Ptr ConvertCustomTypeToJson(const wchar_t& value); template<> Ptr ConvertCustomTypeToJson(const VKEY& value); template<> Ptr ConvertCustomTypeToJson(const Color& value); + template<> Ptr ConvertCustomTypeToJson>(const Ptr& value); template void ConvertJsonToCustomType(Ptr node, T& value) @@ -21483,6 +21681,7 @@ namespace vl::presentation::remoteprotocol template<> void ConvertJsonToCustomType(Ptr node, wchar_t& value); template<> void ConvertJsonToCustomType(Ptr node, VKEY& value); template<> void ConvertJsonToCustomType(Ptr node, Color& value); + template<> void ConvertJsonToCustomType>(Ptr node, Ptr& value); template void ConvertCustomTypeToJsonField(Ptr node, const wchar_t* name, const T& value) @@ -21493,93 +21692,234 @@ namespace vl::presentation::remoteprotocol node->fields.Add(field); } + template + Ptr NullableToJson(const T& value, F&& get) + { + if (!value) + { + auto node = Ptr(new glr::json::JsonLiteral); + node->value = glr::json::JsonLiteralValue::Null; + return node; + } + else + { + return ConvertCustomTypeToJson(get(value)); + } + } + + template + bool JsonToNullable(Ptr node, T& value, F&& set) + { + if (auto jsonLiteral = node.Cast()) + { + if (jsonLiteral->value == glr::json::JsonLiteralValue::Null) + { + value = T{}; + return true; + } + } + else + { + set([&](auto&& item) { ConvertJsonToCustomType(node, item); }); + return true; + } + return false; + } + template struct JsonHelper> { static Ptr ToJson(const Nullable& value) { - if (!value) - { - auto node = Ptr(new glr::json::JsonLiteral); - node->value = glr::json::JsonLiteralValue::Null; - return node; - } - else - { - return ConvertCustomTypeToJson(value.Value()); - } + return NullableToJson( + value, + [](auto&& v)->decltype(auto) { return v.Value(); } + ); } static void FromJson(Ptr node, Nullable& value) { #define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, Ptr>&)#" - if (auto jsonLiteral = node.Cast()) - { - if (jsonLiteral->value == glr::json::JsonLiteralValue::Null) + if (!JsonToNullable( + node, + value, + [&](auto&& f) { - value.Reset(); - return; - } - else - { - CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); - } - } - else + T item; + f(item); + value = std::move(item); + })) { - T item; - ConvertJsonToCustomType(node, item); - value = item; + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); } #undef ERROR_MESSAGE_PREFIX } }; template - struct JsonHelper>> + struct JsonHelper> { - static Ptr ToJson(const Ptr>& value) + static Ptr ToJson(const Ptr& value) { - if (!value) - { - auto node = Ptr(new glr::json::JsonLiteral); - node->value = glr::json::JsonLiteralValue::Null; - return node; - } - else - { - auto node = Ptr(new glr::json::JsonArray); - for (auto&& item : *value.Obj()) - { - node->items.Add(ConvertCustomTypeToJson(item)); - } - return node; - } + return NullableToJson( + value, + [](auto&& v)->decltype(auto) { return *v.Obj(); } + ); } - static void FromJson(Ptr node, Ptr>& value) + static void FromJson(Ptr node, Ptr& value) { -#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, Ptr>&)#" - if (auto jsonLiteral = node.Cast()) - { - if (jsonLiteral->value == glr::json::JsonLiteralValue::Null) +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, Ptr&)#" + if (!JsonToNullable( + node, + value, + [&](auto&& f) { - value = {}; - return; - } - } - else if (auto jsonArray = node.Cast()) + value = Ptr(new T); + f(*value.Obj()); + })) + { + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); + } +#undef ERROR_MESSAGE_PREFIX + } + }; + + template + struct JsonHelper> + { + static Ptr ToJson(const collections::List& value) + { + auto node = Ptr(new glr::json::JsonArray); + for (auto&& item : value) + { + node->items.Add(ConvertCustomTypeToJson(item)); + } + return node; + } + + static void FromJson(Ptr node, collections::List& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, List&)#" + value.Clear(); + if (auto jsonArray = node.Cast()) { - value = Ptr(new collections::List); for (auto jsonItem : jsonArray->items) { T item; ConvertJsonToCustomType(jsonItem, item); - value->Add(std::move(item)); + value.Add(std::move(item)); } return; } CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); +#undef ERROR_MESSAGE_PREFIX + } + }; + + template + struct JsonHelper> + { + static Ptr ToJson(const ArrayMap& value) + { + auto&& values = const_cast&>(value.map.Values()); + return ConvertCustomTypeToJson(values); + } + + static void FromJson(Ptr node, ArrayMap& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, ArrayMap&)#" + value.Clear(); + collections::List values; + ConvertJsonToCustomType(node, values); + for (auto&& item : values) + { + value.Add(item); + } +#undef ERROR_MESSAGE_PREFIX + } + }; + + template + struct JsonHelper> + { + static Ptr ToJson(const collections::Dictionary& value) + { + auto node = Ptr(new glr::json::JsonArray); + for (auto [key, value] : value) + { + auto pairNode = Ptr(new glr::json::JsonArray); + pairNode->items.Add(ConvertCustomTypeToJson(key)); + pairNode->items.Add(ConvertCustomTypeToJson(value)); + node->items.Add(pairNode); + } + return node; + } + + static void FromJson(Ptr node, collections::Dictionary& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, Dictionary&)#" + value.Clear(); + auto jsonArray = node.Cast(); + if (!jsonArray) goto FAILED; + for (auto jsonPair : jsonArray->items) + { + auto jsonPairArray = jsonPair.Cast(); + if (!jsonPairArray) goto FAILED; + if (jsonPairArray->items.Count() != 2) goto FAILED; + TKey itemKey; + ConvertJsonToCustomType(jsonPairArray->items[0], itemKey); + TValue itemValue; + ConvertJsonToCustomType(jsonPairArray->items[1], itemValue); + value.Add(itemKey, itemValue); + } + return; + FAILED: + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); +#undef ERROR_MESSAGE_PREFIX + } + }; + + template + struct JsonHelper> + { + static Ptr ToJson(const Variant& value) + { + auto node = Ptr(new glr::json::JsonArray); + value.Apply([&node](const T& element) + { + node->items.Add(ConvertCustomTypeToJson(WString::Unmanaged(JsonNameHelper::Name))); + node->items.Add(ConvertCustomTypeToJson(element)); + }); + return node; + } + + template + static bool TryFromJson(Ptr node, const WString& itemKey, Variant& value) + { + if (JsonNameHelper::Name != itemKey) return false; + T itemValue; + ConvertJsonToCustomType(node, itemValue); + value = std::move(itemValue); + return true; + } + + static void FromJson(Ptr node, Variant& value) + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::ConvertJsonToCustomType(Ptr, Variant&)#" + auto jsonPairArray = node.Cast(); + if (!jsonPairArray) goto FAILED; + if (jsonPairArray->items.Count() != 2) goto FAILED; + { + WString itemKey; + ConvertJsonToCustomType(jsonPairArray->items[0], itemKey); + if ((TryFromJson(jsonPairArray->items[1], itemKey, value) || ...)) + { + return; + } + } + FAILED: + CHECK_FAIL(ERROR_MESSAGE_PREFIX L"Json node does not match the expected type."); #undef ERROR_MESSAGE_PREFIX } }; @@ -21600,6 +21940,87 @@ Licensed under https ://github.com/vczh-libraries/License #define VCZH_PRESENTATION_GUIREMOTECONTROLLER_REMOTEPROTOCOLSCHEMA +namespace vl::presentation::remoteprotocol +{ + struct FontConfig; + struct ScreenConfig; + struct WindowSizingConfig; + struct WindowShowing; + struct IOMouseInfoWithButton; + struct GlobalShortcutKey; + struct ElementDesc_SolidBorder; + struct ElementDesc_SinkBorder; + struct ElementDesc_SinkSplitter; + struct ElementDesc_SolidBackground; + struct ElementDesc_GradientBackground; + struct ElementDesc_InnerShadow; + struct ElementDesc_Polygon; + struct ElementDesc_SolidLabel; + struct ImageCreation; + struct ImageFrameMetadata; + struct ImageMetadata; + struct ElementDesc_ImageFrame; + struct RendererCreation; + struct ElementBeginRendering; + struct ElementRendering; + struct ElementBoundary; + struct ElementMeasuring_FontHeight; + struct ElementMeasuring_ElementMinSize; + struct ElementMeasurings; + struct RenderingDom; + struct RenderingCommand_BeginBoundary; + struct RenderingCommand_EndBoundary; + struct RenderingCommand_Element; + struct RenderingFrame; + struct RenderingTrace; +} +namespace vl::presentation::remoteprotocol +{ + template<> struct JsonNameHelper<::vl::presentation::NativeCoordinate> { static constexpr const wchar_t* Name = L"NativeCoordinate"; }; + template<> struct JsonNameHelper<::vl::presentation::NativePoint> { static constexpr const wchar_t* Name = L"NativePoint"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeSize> { static constexpr const wchar_t* Name = L"NativeSize"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeRect> { static constexpr const wchar_t* Name = L"NativeRect"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeMargin> { static constexpr const wchar_t* Name = L"NativeMargin"; }; + template<> struct JsonNameHelper<::vl::presentation::Point> { static constexpr const wchar_t* Name = L"Point"; }; + template<> struct JsonNameHelper<::vl::presentation::Size> { static constexpr const wchar_t* Name = L"Size"; }; + template<> struct JsonNameHelper<::vl::presentation::Rect> { static constexpr const wchar_t* Name = L"Rect"; }; + template<> struct JsonNameHelper<::vl::presentation::FontProperties> { static constexpr const wchar_t* Name = L"FontProperties"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::FontConfig> { static constexpr const wchar_t* Name = L"FontConfig"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ScreenConfig> { static constexpr const wchar_t* Name = L"ScreenConfig"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::WindowSizingConfig> { static constexpr const wchar_t* Name = L"WindowSizingConfig"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::WindowShowing> { static constexpr const wchar_t* Name = L"WindowShowing"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeWindowMouseInfo> { static constexpr const wchar_t* Name = L"IOMouseInfo"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::IOMouseInfoWithButton> { static constexpr const wchar_t* Name = L"IOMouseInfoWithButton"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeWindowKeyInfo> { static constexpr const wchar_t* Name = L"IOKeyInfo"; }; + template<> struct JsonNameHelper<::vl::presentation::NativeWindowCharInfo> { static constexpr const wchar_t* Name = L"IOCharInfo"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::GlobalShortcutKey> { static constexpr const wchar_t* Name = L"GlobalShortcutKey"; }; + template<> struct JsonNameHelper<::vl::presentation::elements::ElementShape> { static constexpr const wchar_t* Name = L"ElementShape"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_SolidBorder> { static constexpr const wchar_t* Name = L"ElementDesc_SolidBorder"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_SinkBorder> { static constexpr const wchar_t* Name = L"ElementDesc_SinkBorder"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_SinkSplitter> { static constexpr const wchar_t* Name = L"ElementDesc_SinkSplitter"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_SolidBackground> { static constexpr const wchar_t* Name = L"ElementDesc_SolidBackground"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_GradientBackground> { static constexpr const wchar_t* Name = L"ElementDesc_GradientBackground"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_InnerShadow> { static constexpr const wchar_t* Name = L"ElementDesc_InnerShadow"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_Polygon> { static constexpr const wchar_t* Name = L"ElementDesc_Polygon"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_SolidLabel> { static constexpr const wchar_t* Name = L"ElementDesc_SolidLabel"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ImageCreation> { static constexpr const wchar_t* Name = L"ImageCreation"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ImageFrameMetadata> { static constexpr const wchar_t* Name = L"ImageFrameMetadata"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ImageMetadata> { static constexpr const wchar_t* Name = L"ImageMetadata"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame> { static constexpr const wchar_t* Name = L"ElementDesc_ImageFrame"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RendererCreation> { static constexpr const wchar_t* Name = L"RendererCreation"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementBeginRendering> { static constexpr const wchar_t* Name = L"ElementBeginRendering"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementRendering> { static constexpr const wchar_t* Name = L"ElementRendering"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementBoundary> { static constexpr const wchar_t* Name = L"ElementBoundary"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight> { static constexpr const wchar_t* Name = L"ElementMeasuring_FontHeight"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize> { static constexpr const wchar_t* Name = L"ElementMeasuring_ElementMinSize"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::ElementMeasurings> { static constexpr const wchar_t* Name = L"ElementMeasurings"; }; + template<> struct JsonNameHelper<::vl::Ptr<::vl::presentation::remoteprotocol::RenderingDom>> { static constexpr const wchar_t* Name = L"RenderingDom"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary> { static constexpr const wchar_t* Name = L"RenderingCommand_BeginBoundary"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary> { static constexpr const wchar_t* Name = L"RenderingCommand_EndBoundary"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RenderingCommand_Element> { static constexpr const wchar_t* Name = L"RenderingCommand_Element"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RenderingFrame> { static constexpr const wchar_t* Name = L"RenderingFrame"; }; + template<> struct JsonNameHelper<::vl::presentation::remoteprotocol::RenderingTrace> { static constexpr const wchar_t* Name = L"RenderingTrace"; }; +} namespace vl::presentation::remoteprotocol { enum class IOMouseButton @@ -21609,22 +22030,6 @@ namespace vl::presentation::remoteprotocol Right, }; - enum class RendererType - { - FocusRectangle, - SolidBorder, - SinkBorder, - SinkSplitter, - SolidBackground, - GradientBackground, - InnerShadow, - SolidLabel, - Polygon, - UnsupportedImageFrame, - UnsupportedColorizedText, - UnsupportedDocument, - }; - enum class ElementHorizontalAlignment { Left, @@ -21645,6 +22050,40 @@ namespace vl::presentation::remoteprotocol TotalSize, }; + enum class RendererType + { + FocusRectangle, + SolidBorder, + SinkBorder, + SinkSplitter, + SolidBackground, + GradientBackground, + InnerShadow, + SolidLabel, + Polygon, + ImageFrame, + UnsupportedColorizedText, + UnsupportedDocument, + }; + + using ElementDescVariant = ::vl::Variant< + ::vl::presentation::remoteprotocol::ElementDesc_SolidBorder, + ::vl::presentation::remoteprotocol::ElementDesc_SinkBorder, + ::vl::presentation::remoteprotocol::ElementDesc_SinkSplitter, + ::vl::presentation::remoteprotocol::ElementDesc_SolidBackground, + ::vl::presentation::remoteprotocol::ElementDesc_GradientBackground, + ::vl::presentation::remoteprotocol::ElementDesc_InnerShadow, + ::vl::presentation::remoteprotocol::ElementDesc_Polygon, + ::vl::presentation::remoteprotocol::ElementDesc_SolidLabel, + ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame + >; + + using RenderingCommand = ::vl::Variant< + ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary, + ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary, + ::vl::presentation::remoteprotocol::RenderingCommand_Element + >; + struct FontConfig { ::vl::presentation::FontProperties defaultFont; @@ -21659,6 +22098,20 @@ namespace vl::presentation::remoteprotocol double scalingY; }; + struct WindowSizingConfig + { + ::vl::presentation::NativeRect bounds; + ::vl::presentation::NativeRect clientBounds; + ::vl::presentation::INativeWindow::WindowSizeState sizeState; + ::vl::presentation::NativeMargin customFramePadding; + }; + + struct WindowShowing + { + bool activate; + ::vl::presentation::INativeWindow::WindowSizeState sizeState; + }; + struct IOMouseInfoWithButton { ::vl::presentation::remoteprotocol::IOMouseButton button; @@ -21674,20 +22127,6 @@ namespace vl::presentation::remoteprotocol ::vl::presentation::VKEY code; }; - struct WindowSizingConfig - { - ::vl::presentation::NativeRect bounds; - ::vl::presentation::NativeRect clientBounds; - ::vl::presentation::INativeWindow::WindowSizeState sizeState; - ::vl::presentation::NativeMargin customFramePadding; - }; - - struct WindowShowing - { - bool activate; - ::vl::presentation::INativeWindow::WindowSizeState sizeState; - }; - struct ElementDesc_SolidBorder { ::vl::vint id; @@ -21757,24 +22196,61 @@ namespace vl::presentation::remoteprotocol ::vl::Nullable<::vl::presentation::remoteprotocol::ElementSolidLabelMeasuringRequest> measuringRequest; }; + struct ImageCreation + { + ::vl::vint id; + ::vl::Ptr<::vl::stream::MemoryStream> imageData; + bool imageDataOmitted; + }; + + struct ImageFrameMetadata + { + ::vl::presentation::Size size; + }; + + struct ImageMetadata + { + ::vl::vint id; + ::vl::presentation::INativeImage::FormatType format; + ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::ImageFrameMetadata>> frames; + }; + + struct ElementDesc_ImageFrame + { + ::vl::vint id; + ::vl::Nullable<::vl::vint> imageId; + ::vl::vint imageFrame; + ::vl::presentation::remoteprotocol::ElementHorizontalAlignment horizontalAlignment; + ::vl::presentation::remoteprotocol::ElementVerticalAlignment verticalAlignment; + bool stretch; + bool enabled; + ::vl::Nullable<::vl::presentation::remoteprotocol::ImageCreation> imageCreation; + }; + struct RendererCreation { ::vl::vint id; ::vl::presentation::remoteprotocol::RendererType type; }; + struct ElementBeginRendering + { + ::vl::vint frameId; + }; + struct ElementRendering { ::vl::vint id; ::vl::presentation::Rect bounds; - ::vl::presentation::Rect clipper; + ::vl::presentation::Rect areaClippedByParent; }; struct ElementBoundary { - ::vl::presentation::INativeWindowListener::HitTestResult hitTestResult; + ::vl::Nullable<::vl::presentation::INativeWindowListener::HitTestResult> hitTestResult; + ::vl::Nullable<::vl::presentation::INativeCursor::SystemCursorType> cursor; ::vl::presentation::Rect bounds; - ::vl::presentation::Rect clipper; + ::vl::presentation::Rect areaClippedBySelf; }; struct ElementMeasuring_FontHeight @@ -21794,19 +22270,63 @@ namespace vl::presentation::remoteprotocol { ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight>> fontHeights; ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize>> minSizes; + ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::ImageMetadata>> createdImages; + }; + + struct RenderingDom + { + ::vl::Nullable<::vl::presentation::INativeWindowListener::HitTestResult> hitTestResult; + ::vl::Nullable<::vl::presentation::INativeCursor::SystemCursorType> cursor; + ::vl::Nullable<::vl::vint> element; + ::vl::presentation::Rect bounds; + ::vl::presentation::Rect validArea; + ::vl::Ptr<::vl::collections::List<::vl::Ptr<::vl::presentation::remoteprotocol::RenderingDom>>> children; + }; + + struct RenderingCommand_BeginBoundary + { + ::vl::presentation::remoteprotocol::ElementBoundary boundary; + }; + + struct RenderingCommand_EndBoundary + { + }; + + struct RenderingCommand_Element + { + ::vl::presentation::remoteprotocol::ElementRendering rendering; + ::vl::Nullable<::vl::vint> element; + }; + + struct RenderingFrame + { + ::vl::vint frameId; + ::vl::Nullable<::vl::WString> frameName; + ::vl::presentation::remoteprotocol::WindowSizingConfig windowSize; + ::vl::Ptr<::vl::collections::Dictionary<::vl::vint, ::vl::presentation::remoteprotocol::ElementDescVariant>> elements; + ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::RenderingCommand>> commands; + ::vl::Ptr<::vl::presentation::remoteprotocol::RenderingDom> root; + }; + + struct RenderingTrace + { + ::vl::Ptr<::vl::collections::Dictionary<::vl::vint, ::vl::presentation::remoteprotocol::RendererType>> createdElements; + ::vl::Ptr<::vl::presentation::remoteprotocol::ArrayMap<::vl::vint, ::vl::presentation::remoteprotocol::ImageMetadata, &::vl::presentation::remoteprotocol::ImageMetadata::id>> createdImages; + ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::RenderingFrame>> frames; }; - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeWindowListener::HitTestResult>(const ::vl::presentation::INativeWindowListener::HitTestResult & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeCursor::SystemCursorType>(const ::vl::presentation::INativeCursor::SystemCursorType & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeWindow::WindowSizeState>(const ::vl::presentation::INativeWindow::WindowSizeState & value); - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseButton>(const ::vl::presentation::remoteprotocol::IOMouseButton & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::elements::ElementShapeType>(const ::vl::presentation::elements::ElementShapeType & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::elements::GuiGradientBackgroundElement::Direction>(const ::vl::presentation::elements::GuiGradientBackgroundElement::Direction & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::elements::Gui3DSplitterElement::Direction>(const ::vl::presentation::elements::Gui3DSplitterElement::Direction & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementHorizontalAlignment>(const ::vl::presentation::remoteprotocol::ElementHorizontalAlignment & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementVerticalAlignment>(const ::vl::presentation::remoteprotocol::ElementVerticalAlignment & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementSolidLabelMeasuringRequest>(const ::vl::presentation::remoteprotocol::ElementSolidLabelMeasuringRequest & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::INativeImage::FormatType>(const ::vl::presentation::INativeImage::FormatType & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererType>(const ::vl::presentation::remoteprotocol::RendererType & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeCoordinate>(const ::vl::presentation::NativeCoordinate & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativePoint>(const ::vl::presentation::NativePoint & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeSize>(const ::vl::presentation::NativeSize & value); @@ -21818,13 +22338,13 @@ namespace vl::presentation::remoteprotocol template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::FontProperties>(const ::vl::presentation::FontProperties & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::FontConfig>(const ::vl::presentation::remoteprotocol::FontConfig & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ScreenConfig>(const ::vl::presentation::remoteprotocol::ScreenConfig & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowSizingConfig>(const ::vl::presentation::remoteprotocol::WindowSizingConfig & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowShowing>(const ::vl::presentation::remoteprotocol::WindowShowing & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeWindowMouseInfo>(const ::vl::presentation::NativeWindowMouseInfo & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::IOMouseInfoWithButton>(const ::vl::presentation::remoteprotocol::IOMouseInfoWithButton & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeWindowKeyInfo>(const ::vl::presentation::NativeWindowKeyInfo & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::NativeWindowCharInfo>(const ::vl::presentation::NativeWindowCharInfo & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::GlobalShortcutKey>(const ::vl::presentation::remoteprotocol::GlobalShortcutKey & value); - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowSizingConfig>(const ::vl::presentation::remoteprotocol::WindowSizingConfig & value); - template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::WindowShowing>(const ::vl::presentation::remoteprotocol::WindowShowing & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::elements::ElementShape>(const ::vl::presentation::elements::ElementShape & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_SolidBorder>(const ::vl::presentation::remoteprotocol::ElementDesc_SolidBorder & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_SinkBorder>(const ::vl::presentation::remoteprotocol::ElementDesc_SinkBorder & value); @@ -21834,24 +22354,36 @@ namespace vl::presentation::remoteprotocol template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_InnerShadow>(const ::vl::presentation::remoteprotocol::ElementDesc_InnerShadow & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_Polygon>(const ::vl::presentation::remoteprotocol::ElementDesc_Polygon & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_SolidLabel>(const ::vl::presentation::remoteprotocol::ElementDesc_SolidLabel & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageCreation>(const ::vl::presentation::remoteprotocol::ImageCreation & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageFrameMetadata>(const ::vl::presentation::remoteprotocol::ImageFrameMetadata & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ImageMetadata>(const ::vl::presentation::remoteprotocol::ImageMetadata & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame>(const ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RendererCreation>(const ::vl::presentation::remoteprotocol::RendererCreation & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementBeginRendering>(const ::vl::presentation::remoteprotocol::ElementBeginRendering & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementRendering>(const ::vl::presentation::remoteprotocol::ElementRendering & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementBoundary>(const ::vl::presentation::remoteprotocol::ElementBoundary & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight>(const ::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize>(const ::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize & value); template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::ElementMeasurings>(const ::vl::presentation::remoteprotocol::ElementMeasurings & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingDom>(const ::vl::presentation::remoteprotocol::RenderingDom & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary>(const ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary>(const ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingCommand_Element>(const ::vl::presentation::remoteprotocol::RenderingCommand_Element & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingFrame>(const ::vl::presentation::remoteprotocol::RenderingFrame & value); + template<> vl::Ptr ConvertCustomTypeToJson<::vl::presentation::remoteprotocol::RenderingTrace>(const ::vl::presentation::remoteprotocol::RenderingTrace & value); - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(vl::Ptr node, ::vl::presentation::remoteprotocol::IOMouseButton& value); template<> void ConvertJsonToCustomType<::vl::presentation::INativeWindowListener::HitTestResult>(vl::Ptr node, ::vl::presentation::INativeWindowListener::HitTestResult& value); template<> void ConvertJsonToCustomType<::vl::presentation::INativeCursor::SystemCursorType>(vl::Ptr node, ::vl::presentation::INativeCursor::SystemCursorType& value); template<> void ConvertJsonToCustomType<::vl::presentation::INativeWindow::WindowSizeState>(vl::Ptr node, ::vl::presentation::INativeWindow::WindowSizeState& value); - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererType& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseButton>(vl::Ptr node, ::vl::presentation::remoteprotocol::IOMouseButton& value); template<> void ConvertJsonToCustomType<::vl::presentation::elements::ElementShapeType>(vl::Ptr node, ::vl::presentation::elements::ElementShapeType& value); template<> void ConvertJsonToCustomType<::vl::presentation::elements::GuiGradientBackgroundElement::Direction>(vl::Ptr node, ::vl::presentation::elements::GuiGradientBackgroundElement::Direction& value); template<> void ConvertJsonToCustomType<::vl::presentation::elements::Gui3DSplitterElement::Direction>(vl::Ptr node, ::vl::presentation::elements::Gui3DSplitterElement::Direction& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementHorizontalAlignment>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementHorizontalAlignment& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementVerticalAlignment>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementVerticalAlignment& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementSolidLabelMeasuringRequest>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementSolidLabelMeasuringRequest& value); + template<> void ConvertJsonToCustomType<::vl::presentation::INativeImage::FormatType>(vl::Ptr node, ::vl::presentation::INativeImage::FormatType& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererType>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererType& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativeCoordinate>(vl::Ptr node, ::vl::presentation::NativeCoordinate& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativePoint>(vl::Ptr node, ::vl::presentation::NativePoint& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativeSize>(vl::Ptr node, ::vl::presentation::NativeSize& value); @@ -21863,13 +22395,13 @@ namespace vl::presentation::remoteprotocol template<> void ConvertJsonToCustomType<::vl::presentation::FontProperties>(vl::Ptr node, ::vl::presentation::FontProperties& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::FontConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::FontConfig& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ScreenConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::ScreenConfig& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowSizingConfig& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowShowing& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativeWindowMouseInfo>(vl::Ptr node, ::vl::presentation::NativeWindowMouseInfo& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::IOMouseInfoWithButton>(vl::Ptr node, ::vl::presentation::remoteprotocol::IOMouseInfoWithButton& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativeWindowKeyInfo>(vl::Ptr node, ::vl::presentation::NativeWindowKeyInfo& value); template<> void ConvertJsonToCustomType<::vl::presentation::NativeWindowCharInfo>(vl::Ptr node, ::vl::presentation::NativeWindowCharInfo& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::GlobalShortcutKey>(vl::Ptr node, ::vl::presentation::remoteprotocol::GlobalShortcutKey& value); - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowSizingConfig>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowSizingConfig& value); - template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::WindowShowing>(vl::Ptr node, ::vl::presentation::remoteprotocol::WindowShowing& value); template<> void ConvertJsonToCustomType<::vl::presentation::elements::ElementShape>(vl::Ptr node, ::vl::presentation::elements::ElementShape& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_SolidBorder>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_SolidBorder& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_SinkBorder>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_SinkBorder& value); @@ -21879,23 +22411,29 @@ namespace vl::presentation::remoteprotocol template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_InnerShadow>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_InnerShadow& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_Polygon>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_Polygon& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_SolidLabel>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_SolidLabel& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageCreation>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageCreation& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageFrameMetadata>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageFrameMetadata& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ImageMetadata>(vl::Ptr node, ::vl::presentation::remoteprotocol::ImageMetadata& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementDesc_ImageFrame>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RendererCreation>(vl::Ptr node, ::vl::presentation::remoteprotocol::RendererCreation& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementBeginRendering>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementBeginRendering& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementRendering>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementRendering& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementBoundary>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementBoundary& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementMeasuring_FontHeight& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementMeasuring_ElementMinSize& value); template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::ElementMeasurings>(vl::Ptr node, ::vl::presentation::remoteprotocol::ElementMeasurings& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingDom>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingDom& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_BeginBoundary& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_EndBoundary& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingCommand_Element>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingCommand_Element& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingFrame>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingFrame& value); + template<> void ConvertJsonToCustomType<::vl::presentation::remoteprotocol::RenderingTrace>(vl::Ptr node, ::vl::presentation::remoteprotocol::RenderingTrace& value); #define GACUI_REMOTEPROTOCOL_MESSAGES(HANDLER)\ HANDLER(ControllerGetFontConfig, void, ::vl::presentation::remoteprotocol::FontConfig, NOREQ, RES, NODROP)\ HANDLER(ControllerGetScreenConfig, void, ::vl::presentation::remoteprotocol::ScreenConfig, NOREQ, RES, NODROP)\ HANDLER(ControllerConnectionEstablished, void, void, NOREQ, NORES, NODROP)\ HANDLER(ControllerConnectionStopped, void, void, NOREQ, NORES, NODROP)\ - HANDLER(IOUpdateGlobalShortcutKey, ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::GlobalShortcutKey>>, void, REQ, NORES, NODROP)\ - HANDLER(IORequireCapture, void, void, NOREQ, NORES, NODROP)\ - HANDLER(IOReleaseCapture, void, void, NOREQ, NORES, NODROP)\ - HANDLER(IOIsKeyPressing, ::vl::presentation::VKEY, bool, REQ, RES, NODROP)\ - HANDLER(IOIsKeyToggled, ::vl::presentation::VKEY, bool, REQ, RES, NODROP)\ HANDLER(WindowGetBounds, void, ::vl::presentation::remoteprotocol::WindowSizingConfig, NOREQ, RES, NODROP)\ HANDLER(WindowNotifySetTitle, ::vl::WString, void, REQ, NORES, DROPREP)\ HANDLER(WindowNotifySetEnabled, bool, void, REQ, NORES, DROPREP)\ @@ -21912,8 +22450,11 @@ namespace vl::presentation::remoteprotocol HANDLER(WindowNotifySetClientSize, ::vl::presentation::NativeSize, void, REQ, NORES, DROPREP)\ HANDLER(WindowNotifyActivate, void, void, NOREQ, NORES, DROPREP)\ HANDLER(WindowNotifyShow, ::vl::presentation::remoteprotocol::WindowShowing, void, REQ, NORES, DROPREP)\ - HANDLER(RendererCreated, ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::RendererCreation>>, void, REQ, NORES, NODROP)\ - HANDLER(RendererDestroyed, ::vl::Ptr<::vl::collections::List<::vl::vint>>, void, REQ, NORES, NODROP)\ + HANDLER(IOUpdateGlobalShortcutKey, ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::GlobalShortcutKey>>, void, REQ, NORES, NODROP)\ + HANDLER(IORequireCapture, void, void, NOREQ, NORES, NODROP)\ + HANDLER(IOReleaseCapture, void, void, NOREQ, NORES, NODROP)\ + HANDLER(IOIsKeyPressing, ::vl::presentation::VKEY, bool, REQ, RES, NODROP)\ + HANDLER(IOIsKeyToggled, ::vl::presentation::VKEY, bool, REQ, RES, NODROP)\ HANDLER(RendererUpdateElement_SolidBorder, ::vl::presentation::remoteprotocol::ElementDesc_SolidBorder, void, REQ, NORES, NODROP)\ HANDLER(RendererUpdateElement_SinkBorder, ::vl::presentation::remoteprotocol::ElementDesc_SinkBorder, void, REQ, NORES, NODROP)\ HANDLER(RendererUpdateElement_SinkSplitter, ::vl::presentation::remoteprotocol::ElementDesc_SinkSplitter, void, REQ, NORES, NODROP)\ @@ -21922,7 +22463,12 @@ namespace vl::presentation::remoteprotocol HANDLER(RendererUpdateElement_InnerShadow, ::vl::presentation::remoteprotocol::ElementDesc_InnerShadow, void, REQ, NORES, NODROP)\ HANDLER(RendererUpdateElement_Polygon, ::vl::presentation::remoteprotocol::ElementDesc_Polygon, void, REQ, NORES, NODROP)\ HANDLER(RendererUpdateElement_SolidLabel, ::vl::presentation::remoteprotocol::ElementDesc_SolidLabel, void, REQ, NORES, NODROP)\ - HANDLER(RendererBeginRendering, void, void, NOREQ, NORES, NODROP)\ + HANDLER(ImageCreated, ::vl::presentation::remoteprotocol::ImageCreation, ::vl::presentation::remoteprotocol::ImageMetadata, REQ, RES, NODROP)\ + HANDLER(ImageDestroyed, ::vl::vint, void, REQ, NORES, NODROP)\ + HANDLER(RendererUpdateElement_ImageFrame, ::vl::presentation::remoteprotocol::ElementDesc_ImageFrame, void, REQ, NORES, NODROP)\ + HANDLER(RendererCreated, ::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::RendererCreation>>, void, REQ, NORES, NODROP)\ + HANDLER(RendererDestroyed, ::vl::Ptr<::vl::collections::List<::vl::vint>>, void, REQ, NORES, NODROP)\ + HANDLER(RendererBeginRendering, ::vl::presentation::remoteprotocol::ElementBeginRendering, void, REQ, NORES, NODROP)\ HANDLER(RendererBeginBoundary, ::vl::presentation::remoteprotocol::ElementBoundary, void, REQ, NORES, NODROP)\ HANDLER(RendererRenderElement, ::vl::presentation::remoteprotocol::ElementRendering, void, REQ, NORES, NODROP)\ HANDLER(RendererEndBoundary, void, void, NOREQ, NORES, NODROP)\ @@ -21934,6 +22480,8 @@ namespace vl::presentation::remoteprotocol HANDLER(ControllerRequestExit, void, NOREQ, NODROP)\ HANDLER(ControllerForceExit, void, NOREQ, NODROP)\ HANDLER(ControllerScreenUpdated, ::vl::presentation::remoteprotocol::ScreenConfig, REQ, DROPREP)\ + HANDLER(WindowBoundsUpdated, ::vl::presentation::remoteprotocol::WindowSizingConfig, REQ, DROPREP)\ + HANDLER(WindowActivatedUpdated, bool, REQ, DROPREP)\ HANDLER(IOGlobalShortcutKey, ::vl::vint, REQ, NODROP)\ HANDLER(IOButtonDown, ::vl::presentation::remoteprotocol::IOMouseInfoWithButton, REQ, NODROP)\ HANDLER(IOButtonDoubleClick, ::vl::presentation::remoteprotocol::IOMouseInfoWithButton, REQ, NODROP)\ @@ -21946,8 +22494,6 @@ namespace vl::presentation::remoteprotocol HANDLER(IOKeyDown, ::vl::presentation::NativeWindowKeyInfo, REQ, NODROP)\ HANDLER(IOKeyUp, ::vl::presentation::NativeWindowKeyInfo, REQ, NODROP)\ HANDLER(IOChar, ::vl::presentation::NativeWindowCharInfo, REQ, NODROP)\ - HANDLER(WindowBoundsUpdated, ::vl::presentation::remoteprotocol::WindowSizingConfig, REQ, DROPREP)\ - HANDLER(WindowActivatedUpdated, bool, REQ, DROPREP)\ #define GACUI_REMOTEPROTOCOL_MESSAGE_REQUEST_TYPES(HANDLER)\ HANDLER(::vl::Ptr<::vl::collections::List<::vl::presentation::remoteprotocol::GlobalShortcutKey>>)\ @@ -21957,8 +22503,10 @@ namespace vl::presentation::remoteprotocol HANDLER(::vl::presentation::NativeRect)\ HANDLER(::vl::presentation::NativeSize)\ HANDLER(::vl::presentation::VKEY)\ + HANDLER(::vl::presentation::remoteprotocol::ElementBeginRendering)\ HANDLER(::vl::presentation::remoteprotocol::ElementBoundary)\ HANDLER(::vl::presentation::remoteprotocol::ElementDesc_GradientBackground)\ + HANDLER(::vl::presentation::remoteprotocol::ElementDesc_ImageFrame)\ HANDLER(::vl::presentation::remoteprotocol::ElementDesc_InnerShadow)\ HANDLER(::vl::presentation::remoteprotocol::ElementDesc_Polygon)\ HANDLER(::vl::presentation::remoteprotocol::ElementDesc_SinkBorder)\ @@ -21967,12 +22515,15 @@ namespace vl::presentation::remoteprotocol HANDLER(::vl::presentation::remoteprotocol::ElementDesc_SolidBorder)\ HANDLER(::vl::presentation::remoteprotocol::ElementDesc_SolidLabel)\ HANDLER(::vl::presentation::remoteprotocol::ElementRendering)\ + HANDLER(::vl::presentation::remoteprotocol::ImageCreation)\ HANDLER(::vl::presentation::remoteprotocol::WindowShowing)\ + HANDLER(::vl::vint)\ HANDLER(bool)\ #define GACUI_REMOTEPROTOCOL_MESSAGE_RESPONSE_TYPES(HANDLER)\ HANDLER(::vl::presentation::remoteprotocol::ElementMeasurings)\ HANDLER(::vl::presentation::remoteprotocol::FontConfig)\ + HANDLER(::vl::presentation::remoteprotocol::ImageMetadata)\ HANDLER(::vl::presentation::remoteprotocol::ScreenConfig)\ HANDLER(::vl::presentation::remoteprotocol::WindowSizingConfig)\ HANDLER(bool)\ @@ -21992,6 +22543,127 @@ namespace vl::presentation::remoteprotocol #endif +/*********************************************************************** +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEGRAPHICS_IMAGESERVICE.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Remote Window + +Interfaces: + GuiRemoteController + +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIREMOTEGRAPHICS_IMAGESERVICE +#define VCZH_PRESENTATION_GUIREMOTEGRAPHICS_IMAGESERVICE + + +namespace vl::presentation +{ + class GuiRemoteController; + + namespace elements + { + class GuiRemoteGraphicsRenderTarget; + } + + namespace elements_remoteprotocol + { + class GuiImageFrameElementRenderer; + } + +/*********************************************************************** +GuiRemoteGraphicsImage +***********************************************************************/ + + class GuiRemoteGraphicsImage; + class GuiRemoteGraphicsImageService; + + class GuiRemoteGraphicsImageFrame : public NativeImageFrameBase + { + friend class GuiRemoteGraphicsImage; + protected: + GuiRemoteGraphicsImage* image; + Size size; + + public: + GuiRemoteGraphicsImageFrame(GuiRemoteGraphicsImage* _image); + ~GuiRemoteGraphicsImageFrame(); + + INativeImage* GetImage() override; + Size GetSize() override; + }; + + class GuiRemoteGraphicsImage : public Object, public virtual INativeImage + { + friend class GuiRemoteGraphicsImageService; + friend class elements::GuiRemoteGraphicsRenderTarget; + friend class elements_remoteprotocol::GuiImageFrameElementRenderer; + using ImageFrameList = collections::List>; + protected: + enum class MetadataStatus + { + Uninitialized, + Requested, + Retrived, + }; + + GuiRemoteController* remote; + vint id = -1; + Ptr binary; + INativeImage::FormatType format = INativeImage::Unknown; + ImageFrameList frames; + MetadataStatus status = MetadataStatus::Uninitialized; + + void EnsureMetadata(); + public: + GuiRemoteGraphicsImage(GuiRemoteController* _remote, vint _id, Ptr _binary); + ~GuiRemoteGraphicsImage(); + + remoteprotocol::ImageCreation GenerateImageCreation(); + void UpdateFromImageMetadata(const remoteprotocol::ImageMetadata& imageMetadata); + + INativeImageService* GetImageService() override; + FormatType GetFormat() override; + vint GetFrameCount() override; + INativeImageFrame* GetFrame(vint index) override; + void SaveToStream(stream::IStream& imageStream, FormatType formatType) override; + }; + +/*********************************************************************** +GuiRemoteGraphicsImageService +***********************************************************************/ + + class GuiRemoteGraphicsImageService : public Object, public virtual INativeImageService + { + friend class GuiRemoteGraphicsImage; + using ImageMap = collections::Dictionary; + protected: + GuiRemoteController* remote; + vint usedImageIds = 0; + ImageMap images; + + Ptr CreateImage(Ptr binary); + public: + GuiRemoteGraphicsImageService(GuiRemoteController* _remote); + ~GuiRemoteGraphicsImageService(); + + void OnControllerConnect(); + void OnControllerDisconnect(); + void Initialize(); + void Finalize(); + GuiRemoteGraphicsImage* GetImage(vint id); + + Ptr CreateImageFromFile(const WString& path) override; + Ptr CreateImageFromMemory(void* buffer, vint length) override; + Ptr CreateImageFromStream(stream::IStream& imageStream) override; + }; +} + +#endif + /*********************************************************************** .\PLATFORMPROVIDERS\REMOTE\GUIREMOTEGRAPHICS.H ***********************************************************************/ @@ -22012,7 +22684,6 @@ Interfaces: namespace vl::presentation { class GuiHostedController; - class GuiRemoteController; class GuiRemoteMessages; namespace elements_remoteprotocol @@ -22022,6 +22693,7 @@ namespace vl::presentation namespace elements { + /*********************************************************************** GuiRemoteGraphicsRenderTarget ***********************************************************************/ @@ -22032,10 +22704,12 @@ GuiRemoteGraphicsRenderTarget using RendererSet = collections::SortedList; using FontHeightMap = collections::Dictionary, vint>; using HitTestResult = INativeWindowListener::HitTestResult; + using SystemCursorType = INativeCursor::SystemCursorType; protected: GuiRemoteController* remote; GuiHostedController* hostedController; NativeSize canvasSize; + vint usedFrameIds = 0; vint usedElementIds = 0; RendererMap renderers; collections::SortedList createdRenderers; @@ -22043,8 +22717,10 @@ GuiRemoteGraphicsRenderTarget RendererSet renderersAskingForCache; Nullable clipperValidArea; collections::List hitTestResults; + collections::List cursors; HitTestResult GetHitTestResultFromGenerator(reflection::DescriptableObject* generator); + Nullable GetCursorFromGenerator(reflection::DescriptableObject* generator); void StartRenderingOnNativeWindow() override; RenderTargetFailure StopRenderingOnNativeWindow() override; @@ -22263,12 +22939,19 @@ namespace vl::presentation::elements_remoteprotocol void SendUpdateElementMessages(bool fullContent) override; }; - class GuiImageFrameElementRenderer : public GuiRemoteProtocolElementRenderer + class GuiImageFrameElementRenderer : public GuiRemoteProtocolElementRenderer { friend class GuiElementRendererBase; + protected: + bool needUpdateSize = false; + + GuiRemoteGraphicsImage* GetRemoteImage(); + void UpdateMinSizeFromImage(GuiRemoteGraphicsImage* image); public: GuiImageFrameElementRenderer(); + bool NeedUpdateMinSizeFromCache() override; + void TryFetchMinSizeFromCache() override; void SendUpdateElementMessages(bool fullContent) override; }; @@ -22301,7 +22984,7 @@ namespace vl::presentation::elements_remoteprotocol #endif /*********************************************************************** -.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOL.H +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOL_SHARED.H ***********************************************************************/ /*********************************************************************** Vczh Library++ 3.0 @@ -22313,8 +22996,8 @@ Interfaces: ***********************************************************************/ -#ifndef VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL -#define VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL +#ifndef VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_SHARED +#define VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_SHARED namespace vl::presentation @@ -22386,8 +23069,307 @@ IGuiRemoteProtocol virtual void Submit() = 0; virtual void ProcessRemoteEvents() = 0; }; + + class GuiRemoteEventCombinator : public Object, public virtual IGuiRemoteProtocolEvents + { + public: + IGuiRemoteProtocolEvents* targetEvents = nullptr; + }; + + template + requires(std::is_base_of_v) + class GuiRemoteProtocolCombinator : public Object, public virtual IGuiRemoteProtocol + { + protected: + IGuiRemoteProtocol* targetProtocol = nullptr; + TEvents eventCombinator; + + public: + GuiRemoteProtocolCombinator(IGuiRemoteProtocol* _protocol) + : targetProtocol(_protocol) + { + } + + // protocol + + WString GetExecutablePath() override + { + return targetProtocol->GetExecutablePath(); + } + + void Initialize(IGuiRemoteProtocolEvents* _events) override + { + eventCombinator.targetEvents = _events; + targetProtocol->Initialize(&eventCombinator); + } + + void Submit() override + { + targetProtocol->Submit(); + } + + void ProcessRemoteEvents() override + { + targetProtocol->ProcessRemoteEvents(); + } + }; } +#endif + +/*********************************************************************** +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOL_FILTERVERIFIER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Remote Window + +Interfaces: + IGuiRemoteProtocol + +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_FILTERVERIFIER +#define VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_FILTERVERIFIER + + +namespace vl::presentation::remoteprotocol::repeatfiltering +{ +/*********************************************************************** +GuiRemoteEventFilterVerifier +***********************************************************************/ + + class GuiRemoteEventFilterVerifier : public GuiRemoteEventCombinator + { + protected: +#define EVENT_NODROP(NAME) +#define EVENT_DROPREP(NAME) bool lastDropRepeatEvent ## NAME = false; +#define EVENT_DROPCON(NAME) bool lastDropConsecutiveEvent ## NAME = false; +#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) + GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) +#undef EVENT_HANDLER +#undef EVENT_DROPCON +#undef EVENT_DROPREP +#undef EVENT_NODROP + + public: + bool submitting = false; + + void ClearDropRepeatMasks() + { +#define EVENT_NODROP(NAME) +#define EVENT_DROPREP(NAME) lastDropRepeatEvent ## NAME = false; +#define EVENT_DROPCON(NAME) +#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) + GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) +#undef EVENT_HANDLER +#undef EVENT_DROPCON +#undef EVENT_DROPREP +#undef EVENT_NODROP + } + + void ClearDropConsecutiveMasks() + { +#define EVENT_NODROP(NAME) +#define EVENT_DROPREP(NAME) +#define EVENT_DROPCON(NAME) lastDropConsecutiveEvent ## NAME = false; +#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) + GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) +#undef EVENT_HANDLER +#undef EVENT_DROPCON +#undef EVENT_DROPREP +#undef EVENT_NODROP + } + + // responses + +#define MESSAGE_NORES(NAME, RESPONSE) +#define MESSAGE_RES(NAME, RESPONSE)\ + void Respond ## NAME(vint id, const RESPONSE& arguments) override\ + {\ + targetEvents->Respond ## NAME(id, arguments);\ + }\ + +#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, ...) MESSAGE_ ## RESTAG(NAME, RESPONSE) + GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) +#undef MESSAGE_HANDLER +#undef MESSAGE_RES +#undef MESSAGE_NORES + + // events + +#define EVENT_NODROP(NAME) + +#define EVENT_DROPREP(NAME)\ + CHECK_ERROR(!lastDropRepeatEvent ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteEventFilterVerifier::On" L ## #NAME L"(...)#[@DropRepeat] event repeated.");\ + lastDropRepeatEvent ## NAME = true;\ + +#define EVENT_DROPCON(NAME)\ + CHECK_ERROR(!lastDropConsecutiveEvent ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteEventFilterVerifier::On" L ## #NAME L"(...)#[@DropConsecutive] event repeated.");\ + ClearDropConsecutiveMasks();\ + lastDropConsecutiveEvent ## NAME = true;\ + +#define EVENT_NOREQ(NAME, REQUEST, DROPTAG)\ + void On ## NAME() override\ + {\ + if (submitting)\ + {\ + EVENT_ ## DROPTAG(NAME);\ + targetEvents->On ## NAME();\ + }\ + else\ + {\ + targetEvents->On ## NAME();\ + }\ + }\ + +#define EVENT_REQ(NAME, REQUEST, DROPTAG)\ + void On ## NAME(const REQUEST& arguments) override\ + {\ + if (submitting)\ + {\ + EVENT_ ## DROPTAG(NAME);\ + targetEvents->On ## NAME(arguments);\ + }\ + else\ + {\ + targetEvents->On ## NAME(arguments);\ + }\ + }\ + +#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## REQTAG(NAME, REQUEST, DROPTAG) + GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) +#undef EVENT_HANDLER +#undef EVENT_REQ +#undef EVENT_NOREQ +#undef EVENT_DROPCON +#undef EVENT_DROPREP +#undef EVENT_NOREP + }; + +/*********************************************************************** +GuiRemoteProtocolFilterVerifier +***********************************************************************/ + + class GuiRemoteProtocolFilter; + + class GuiRemoteProtocolFilterVerifier : public GuiRemoteProtocolCombinator + { + friend class GuiRemoteProtocolFilter; + protected: + vint lastRequestId = -1; + +#define MESSAGE_NODROP(NAME) +#define MESSAGE_DROPREP(NAME) bool lastDropRepeatRequest ## NAME = false; +#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG) MESSAGE_ ## DROPTAG(NAME) + GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) +#undef MESSAGE_HANDLER +#undef MESSAGE_DROPREP +#undef MESSAGE_NODROP + + void ClearDropRepeatMasks() + { +#define MESSAGE_NODROP(NAME) +#define MESSAGE_DROPREP(NAME) lastDropRepeatRequest ## NAME = false; +#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG) MESSAGE_ ## DROPTAG(NAME) + GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) +#undef MESSAGE_HANDLER +#undef MESSAGE_DROPREP +#undef MESSAGE_NODROP + } + public: + GuiRemoteProtocolFilterVerifier(IGuiRemoteProtocol* _protocol) + : GuiRemoteProtocolCombinator(_protocol) + { + } + + protected: + + public: + + // messages + +#define MESSAGE_NODROP(NAME) + +#define MESSAGE_DROPREP(NAME)\ + CHECK_ERROR(!lastDropRepeatRequest ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteProtocolFilterVerifier::Request" L ## #NAME L"(...)#[@DropRepeat] message repeated.");\ + lastDropRepeatRequest ## NAME = true;\ + +#define MESSAGE_NOREQ_NORES(NAME, REQUEST, RESPONSE, DROPTAG)\ + void Request ## NAME() override\ + {\ + MESSAGE_ ## DROPTAG(NAME);\ + targetProtocol->Request ## NAME();\ + }\ + +#define MESSAGE_NOREQ_RES(NAME, REQUEST, RESPONSE, DROPTAG)\ + void Request ## NAME(vint id) override\ + {\ + MESSAGE_ ## DROPTAG(NAME);\ + targetProtocol->Request ## NAME(id);\ + }\ + +#define MESSAGE_REQ_NORES(NAME, REQUEST, RESPONSE, DROPTAG)\ + void Request ## NAME(const REQUEST& arguments) override\ + {\ + MESSAGE_ ## DROPTAG(NAME);\ + targetProtocol->Request ## NAME(arguments);\ + }\ + +#define MESSAGE_REQ_RES(NAME, REQUEST, RESPONSE, DROPTAG)\ + void Request ## NAME(vint id, const REQUEST& arguments) override\ + {\ + MESSAGE_ ## DROPTAG(NAME);\ + targetProtocol->Request ## NAME(id, arguments);\ + }\ + +#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG, ...) MESSAGE_ ## REQTAG ## _ ## RESTAG(NAME, REQUEST, RESPONSE, DROPTAG) + GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) +#undef MESSAGE_HANDLER +#undef MESSAGE_REQ_RES +#undef MESSAGE_REQ_NORES +#undef MESSAGE_NOREQ_RES +#undef MESSAGE_NOREQ_NORES +#undef MESSAGE_DROPREP +#undef MESSAGE_NODROP + + // protocol + + void Submit() override + { +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::repeatfiltering::GuiRemoteProtocolFilterVerifier::Submit()#" + CHECK_ERROR(!eventCombinator.submitting, ERROR_MESSAGE_PREFIX L"This function is not allowed to be called recursively."); + eventCombinator.submitting = true; + GuiRemoteProtocolCombinator::Submit(); + ClearDropRepeatMasks(); + eventCombinator.ClearDropRepeatMasks(); + eventCombinator.ClearDropConsecutiveMasks(); + eventCombinator.submitting = false; +#undef ERROR_MESSAGE_PREFIX + } + }; +} + +#endif + +/*********************************************************************** +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOL_FILTER.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Remote Window + +Interfaces: + IGuiRemoteProtocol + +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_FILTER +#define VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL_FILTER + + namespace vl::presentation::remoteprotocol::repeatfiltering { using FilteredRequestTypes = Variant filteredResponses; @@ -22482,7 +23462,6 @@ GuiRemoteEventFilter #undef EVENT_NODROP public: - IGuiRemoteProtocolEvents* targetEvents = nullptr; bool submitting = false; collections::Dictionary responseIds; @@ -22644,17 +23623,10 @@ GuiRemoteEventFilter /*********************************************************************** GuiRemoteProtocolFilter ***********************************************************************/ - - class GuiRemoteProtocolFilterVerifier; - class GuiRemoteProtocolFilter - : public Object - , public virtual IGuiRemoteProtocol + class GuiRemoteProtocolFilter : public GuiRemoteProtocolCombinator { - friend class GuiRemoteProtocolFilterVerifier; protected: - IGuiRemoteProtocol* targetProtocol = nullptr; - GuiRemoteEventFilter eventFilter; vint lastRequestId = -1; collections::List filteredRequests; @@ -22721,12 +23693,12 @@ GuiRemoteProtocolFilter #undef MESSAGE_NOREQ_NORES } - CHECK_ERROR(eventFilter.responseIds.Count() == 0, L"Messages sending to IGuiRemoteProtocol should be all responded."); + CHECK_ERROR(eventCombinator.responseIds.Count() == 0, L"Messages sending to IGuiRemoteProtocol should be all responded."); filteredRequests.Clear(); } public: GuiRemoteProtocolFilter(IGuiRemoteProtocol* _protocol) - : targetProtocol(_protocol) + : GuiRemoteProtocolCombinator(_protocol) { } @@ -22768,7 +23740,7 @@ GuiRemoteProtocolFilter request.id = id;\ request.name = FilteredRequestNames::NAME;\ filteredRequests.Add(request);\ - eventFilter.responseIds.Add(id, FilteredResponseNames::NAME);\ + eventCombinator.responseIds.Add(id, FilteredResponseNames::NAME);\ }\ #define MESSAGE_REQ_NORES(NAME, REQUEST, RESPONSE, DROPTAG)\ @@ -22796,7 +23768,7 @@ GuiRemoteProtocolFilter request.name = FilteredRequestNames::NAME;\ request.arguments = arguments;\ filteredRequests.Add(request);\ - eventFilter.responseIds.Add(id, FilteredResponseNames::NAME);\ + eventCombinator.responseIds.Add(id, FilteredResponseNames::NAME);\ }\ #define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG, ...) MESSAGE_ ## REQTAG ## _ ## RESTAG(NAME, REQUEST, RESPONSE, DROPTAG) @@ -22811,267 +23783,54 @@ GuiRemoteProtocolFilter // protocol - WString GetExecutablePath() override - { - return targetProtocol->GetExecutablePath(); - } - void Initialize(IGuiRemoteProtocolEvents* _events) override { - eventFilter.targetEvents = _events; - targetProtocol->Initialize(&eventFilter); + if (auto verifierProtocol = dynamic_cast(targetProtocol)) + { + verifierProtocol->targetProtocol->Initialize(&eventCombinator); + eventCombinator.targetEvents = &verifierProtocol->eventCombinator; + verifierProtocol->eventCombinator.targetEvents = _events; + } + else + { + GuiRemoteProtocolCombinator::Initialize(_events); + } } void Submit() override { - eventFilter.submitting = true; - targetProtocol->Submit(); +#define ERROR_MESSAGE_PREFIX L"vl::presentation::remoteprotocol::repeatfiltering::GuiRemoteProtocolFilter::Submit()#" + CHECK_ERROR(!eventCombinator.submitting, ERROR_MESSAGE_PREFIX L"This function is not allowed to be called recursively."); + eventCombinator.submitting = true; ProcessRequests(); - eventFilter.ProcessResponses(); - eventFilter.submitting = false; - eventFilter.ProcessEvents(); - } - - void ProcessRemoteEvents() override - { - targetProtocol->ProcessRemoteEvents(); - } - }; - -/*********************************************************************** -GuiRemoteEventFilterVerifier -***********************************************************************/ - - class GuiRemoteEventFilterVerifier - : public Object - , public virtual IGuiRemoteProtocolEvents - { - protected: -#define EVENT_NODROP(NAME) -#define EVENT_DROPREP(NAME) bool lastDropRepeatEvent ## NAME = false; -#define EVENT_DROPCON(NAME) bool lastDropConsecutiveEvent ## NAME = false; -#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) - GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) -#undef EVENT_HANDLER -#undef EVENT_DROPCON -#undef EVENT_DROPREP -#undef EVENT_NODROP - - public: - IGuiRemoteProtocolEvents* targetEvents = nullptr; - bool submitting = false; - - void ClearDropRepeatMasks() - { -#define EVENT_NODROP(NAME) -#define EVENT_DROPREP(NAME) lastDropRepeatEvent ## NAME = false; -#define EVENT_DROPCON(NAME) -#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) - GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) -#undef EVENT_HANDLER -#undef EVENT_DROPCON -#undef EVENT_DROPREP -#undef EVENT_NODROP - } - - void ClearDropConsecutiveMasks() - { -#define EVENT_NODROP(NAME) -#define EVENT_DROPREP(NAME) -#define EVENT_DROPCON(NAME) lastDropConsecutiveEvent ## NAME = false; -#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## DROPTAG(NAME) - GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) -#undef EVENT_HANDLER -#undef EVENT_DROPCON -#undef EVENT_DROPREP -#undef EVENT_NODROP - } - - // responses - -#define MESSAGE_NORES(NAME, RESPONSE) -#define MESSAGE_RES(NAME, RESPONSE)\ - void Respond ## NAME(vint id, const RESPONSE& arguments) override\ - {\ - targetEvents->Respond ## NAME(id, arguments);\ - }\ - -#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, ...) MESSAGE_ ## RESTAG(NAME, RESPONSE) - GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) -#undef MESSAGE_HANDLER -#undef MESSAGE_RES -#undef MESSAGE_NORES - - // events - -#define EVENT_NODROP(NAME) - -#define EVENT_DROPREP(NAME)\ - CHECK_ERROR(!lastDropRepeatEvent ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteEventFilterVerifier::On" L ## #NAME L"(...)#[@DropRepeat] event repeated.");\ - lastDropRepeatEvent ## NAME = true;\ - -#define EVENT_DROPCON(NAME)\ - CHECK_ERROR(!lastDropConsecutiveEvent ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteEventFilterVerifier::On" L ## #NAME L"(...)#[@DropConsecutive] event repeated.");\ - ClearDropConsecutiveMasks();\ - lastDropConsecutiveEvent ## NAME = true;\ - -#define EVENT_NOREQ(NAME, REQUEST, DROPTAG)\ - void On ## NAME() override\ - {\ - if (submitting)\ - {\ - EVENT_ ## DROPTAG(NAME);\ - targetEvents->On ## NAME();\ - }\ - else\ - {\ - targetEvents->On ## NAME();\ - }\ - }\ - -#define EVENT_REQ(NAME, REQUEST, DROPTAG)\ - void On ## NAME(const REQUEST& arguments) override\ - {\ - if (submitting)\ - {\ - EVENT_ ## DROPTAG(NAME);\ - targetEvents->On ## NAME(arguments);\ - }\ - else\ - {\ - targetEvents->On ## NAME(arguments);\ - }\ - }\ - -#define EVENT_HANDLER(NAME, REQUEST, REQTAG, DROPTAG, ...) EVENT_ ## REQTAG(NAME, REQUEST, DROPTAG) - GACUI_REMOTEPROTOCOL_EVENTS(EVENT_HANDLER) -#undef EVENT_HANDLER -#undef EVENT_REQ -#undef EVENT_NOREQ -#undef EVENT_DROPCON -#undef EVENT_DROPREP -#undef EVENT_NOREP - }; - -/*********************************************************************** -GuiRemoteProtocolFilterVerifier -***********************************************************************/ - - class GuiRemoteProtocolFilterVerifier - : public Object - , public virtual IGuiRemoteProtocol - { - protected: - GuiRemoteProtocolFilter* targetProtocol = nullptr; - GuiRemoteEventFilterVerifier eventFilter; - vint lastRequestId = -1; - collections::List filteredRequests; - -#define MESSAGE_NODROP(NAME) -#define MESSAGE_DROPREP(NAME) bool lastDropRepeatRequest ## NAME = false; -#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG) MESSAGE_ ## DROPTAG(NAME) - GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) -#undef MESSAGE_HANDLER -#undef MESSAGE_DROPREP -#undef MESSAGE_NODROP - - void ClearDropRepeatMasks() - { -#define MESSAGE_NODROP(NAME) -#define MESSAGE_DROPREP(NAME) lastDropRepeatRequest ## NAME = false; -#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG) MESSAGE_ ## DROPTAG(NAME) - GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) -#undef MESSAGE_HANDLER -#undef MESSAGE_DROPREP -#undef MESSAGE_NODROP - } - public: - GuiRemoteProtocolFilterVerifier(GuiRemoteProtocolFilter* _protocol) - : targetProtocol(_protocol) - { - } - - protected: - - public: - - // messages - -#define MESSAGE_NODROP(NAME) - -#define MESSAGE_DROPREP(NAME)\ - CHECK_ERROR(!lastDropRepeatRequest ## NAME, L"vl::presentation::remoteprotocol::GuiRemoteProtocolFilterVerifier::Request" L ## #NAME L"(...)#[@DropRepeat] message repeated.");\ - lastDropRepeatRequest ## NAME = true;\ - -#define MESSAGE_NOREQ_NORES(NAME, REQUEST, RESPONSE, DROPTAG)\ - void Request ## NAME() override\ - {\ - MESSAGE_ ## DROPTAG(NAME);\ - targetProtocol->Request ## NAME();\ - }\ - -#define MESSAGE_NOREQ_RES(NAME, REQUEST, RESPONSE, DROPTAG)\ - void Request ## NAME(vint id) override\ - {\ - MESSAGE_ ## DROPTAG(NAME);\ - targetProtocol->Request ## NAME(id);\ - }\ - -#define MESSAGE_REQ_NORES(NAME, REQUEST, RESPONSE, DROPTAG)\ - void Request ## NAME(const REQUEST& arguments) override\ - {\ - MESSAGE_ ## DROPTAG(NAME);\ - targetProtocol->Request ## NAME(arguments);\ - }\ - -#define MESSAGE_REQ_RES(NAME, REQUEST, RESPONSE, DROPTAG)\ - void Request ## NAME(vint id, const REQUEST& arguments) override\ - {\ - MESSAGE_ ## DROPTAG(NAME);\ - targetProtocol->Request ## NAME(id, arguments);\ - }\ - -#define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, DROPTAG, ...) MESSAGE_ ## REQTAG ## _ ## RESTAG(NAME, REQUEST, RESPONSE, DROPTAG) - GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) -#undef MESSAGE_HANDLER -#undef MESSAGE_REQ_RES -#undef MESSAGE_REQ_NORES -#undef MESSAGE_NOREQ_RES -#undef MESSAGE_NOREQ_NORES -#undef MESSAGE_DROPREP -#undef MESSAGE_NODROP - - // protocol - - WString GetExecutablePath() override - { - return targetProtocol->GetExecutablePath(); - } - - void Initialize(IGuiRemoteProtocolEvents* _events) override - { - targetProtocol->Initialize(&eventFilter); - eventFilter.targetEvents = targetProtocol->eventFilter.targetEvents; - targetProtocol->eventFilter.targetEvents = _events; - } - - void Submit() override - { - eventFilter.submitting = true; - targetProtocol->Submit(); - ClearDropRepeatMasks(); - eventFilter.ClearDropRepeatMasks(); - eventFilter.ClearDropConsecutiveMasks(); - eventFilter.submitting = false; - } - - void ProcessRemoteEvents() override - { - targetProtocol->ProcessRemoteEvents(); + eventCombinator.ProcessResponses(); + GuiRemoteProtocolCombinator::Submit(); + eventCombinator.submitting = false; + eventCombinator.ProcessEvents(); +#undef ERROR_MESSAGE_PREFIX } }; } +#endif + +/*********************************************************************** +.\PLATFORMPROVIDERS\REMOTE\GUIREMOTEPROTOCOL.H +***********************************************************************/ +/*********************************************************************** +Vczh Library++ 3.0 +Developer: Zihan Chen(vczh) +GacUI::Remote Window + +Interfaces: + IGuiRemoteProtocol + +***********************************************************************/ + +#ifndef VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL +#define VCZH_PRESENTATION_GUIREMOTECONTROLLER_GUIREMOTEPROTOCOL + + #endif /*********************************************************************** @@ -23293,11 +24052,14 @@ IGuiResourceManager class IGuiResourceManager : public IDescriptable, public Description { + using ResourceLazyList = collections::LazyList>; public: virtual void SetResource(Ptr resource, GuiResourceError::List& errors, GuiResourceUsage usage = GuiResourceUsage::DataOnly) = 0; virtual Ptr GetResource(const WString& name) = 0; virtual Ptr GetResourceFromClassName(const WString& classFullName) = 0; - virtual void UnloadResource(const WString& name) = 0; + virtual ResourceLazyList GetLoadedResources() = 0; + virtual bool UnloadResource(const WString& name) = 0; + virtual bool UnloadResource(Ptr resource) = 0; virtual void LoadResourceOrPending(stream::IStream& resourceStream, GuiResourceError::List& errors, GuiResourceUsage usage = GuiResourceUsage::DataOnly) = 0; virtual void LoadResourceOrPending(stream::IStream& resourceStream, GuiResourceUsage usage = GuiResourceUsage::DataOnly) = 0; virtual void GetPendingResourceNames(collections::List& names) = 0; @@ -24162,7 +24924,7 @@ namespace vl /*********************************************************************** !!!!!! DO NOT MODIFY !!!!!! -GacGen.exe Resource.xml +Source: GacUI FakeDialogServiceUI This file is generated by Workflow compiler https://github.com/vczh-libraries @@ -27245,7 +28007,7 @@ Closures /*********************************************************************** !!!!!! DO NOT MODIFY !!!!!! -GacGen.exe Resource.xml +Source: GacUI FakeDialogServiceUI This file is generated by Workflow compiler https://github.com/vczh-libraries @@ -27416,6 +28178,7 @@ GuiHostedController , protected INativeScreenService , protected INativeScreen , protected INativeWindowService + , protected IGuiHostedApplication { friend class GuiHostedWindow; friend class elements::GuiHostedGraphicsResourceManager; @@ -27586,10 +28349,17 @@ GuiHostedController void DestroyHostedWindowsAfterRunning(); void Run(INativeWindow* window) override; bool RunOneCycle() override; + + // ============================================================= + // IGuiHostedApplication + // ============================================================= + + INativeWindow* GetNativeWindowHost() override; public: GuiHostedController(INativeController* _nativeController); ~GuiHostedController(); + IGuiHostedApplication* GetHostedApplication(); void Initialize(); void Finalize(); void RequestRefresh(); @@ -27659,7 +28429,6 @@ GuiRemoteMessages ~GuiRemoteMessages(); void Submit(); - void ClearResponses(); // messages @@ -27678,7 +28447,7 @@ GuiRemoteMessages #define MESSAGE_NORES(NAME, RESPONSE) #define MESSAGE_RES(NAME, RESPONSE)\ void Respond ## NAME(vint id, const RESPONSE& arguments);\ - const RESPONSE& Retrieve ## NAME(vint id);\ + RESPONSE Retrieve ## NAME(vint id);\ #define MESSAGE_HANDLER(NAME, REQUEST, RESPONSE, REQTAG, RESTAG, ...) MESSAGE_ ## RESTAG(NAME, RESPONSE) GACUI_REMOTEPROTOCOL_MESSAGES(MESSAGE_HANDLER) @@ -27924,6 +28693,7 @@ GuiRemoteController friend class GuiRemoteMessages; friend class GuiRemoteEvents; friend class GuiRemoteWindow; + friend class GuiRemoteGraphicsImage; friend class elements::GuiRemoteGraphicsRenderTarget; friend class elements::GuiRemoteGraphicsResourceManager; using CursorMap = collections::Dictionary>; @@ -27938,6 +28708,7 @@ GuiRemoteController elements::GuiRemoteGraphicsResourceManager* resourceManager = nullptr; SharedCallbackService callbackService; SharedAsyncService asyncService; + GuiRemoteGraphicsImageService imageService; bool applicationRunning = false; bool connectionForcedToStop = false; bool connectionStopped = false; diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index 57c1e8c1..a7290c00 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -287,16 +287,19 @@ namespace vl writer.WriteLine(L"#endif"); writer.WriteLine(L"\t\t\t\t}"); writer.WriteLine(L""); - writer.WriteLine(L"\t\t\t\tvoid Load()override"); + writer.WriteLine(L"\t\t\t\tvoid Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override"); writer.WriteLine(L"\t\t\t\t{"); - writer.WriteLine(L"\t\t\t\t\tList errors;"); - writer.WriteLine(L"\t\t\t\t\tMemoryStream resourceStream;"); - writer.WriteLine(L"\t\t\t\t\t" + cppInput->assemblyName + L"ResourceReader::ReadToStream(resourceStream);"); - writer.WriteLine(L"\t\t\t\t\tresourceStream.SeekFromBegin(0);"); - writer.WriteLine(L"\t\t\t\t\tGetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass);"); + writer.WriteLine(L"\t\t\t\t\tif (controllerRelatedPlugins)"); + writer.WriteLine(L"\t\t\t\t\t{"); + writer.WriteLine(L"\t\t\t\t\t\tList errors;"); + writer.WriteLine(L"\t\t\t\t\t\tMemoryStream resourceStream;"); + writer.WriteLine(L"\t\t\t\t\t\t" + cppInput->assemblyName + L"ResourceReader::ReadToStream(resourceStream);"); + writer.WriteLine(L"\t\t\t\t\t\tresourceStream.SeekFromBegin(0);"); + writer.WriteLine(L"\t\t\t\t\t\tGetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass);"); + writer.WriteLine(L"\t\t\t\t\t}"); writer.WriteLine(L"\t\t\t\t}"); writer.WriteLine(L""); - writer.WriteLine(L"\t\t\t\tvoid Unload()override"); + writer.WriteLine(L"\t\t\t\tvoid Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override"); writer.WriteLine(L"\t\t\t\t{"); writer.WriteLine(L"\t\t\t\t}"); writer.WriteLine(L"\t\t\t};"); @@ -2403,16 +2406,22 @@ GuiInstanceLoaderManager GUI_PLUGIN_DEPEND(GacUI_Parser); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - instanceLoaderManager = this; - IGuiParserManager* manager = GetParserManager(); - manager->SetParser(L"INSTANCE-ELEMENT-NAME", Ptr(new GuiInstanceContextElementNameParser)); + if (controllerUnrelatedPlugins) + { + instanceLoaderManager = this; + IGuiParserManager* manager = GetParserManager(); + manager->SetParser(L"INSTANCE-ELEMENT-NAME", Ptr(new GuiInstanceContextElementNameParser)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - instanceLoaderManager = nullptr; + if (controllerUnrelatedPlugins) + { + instanceLoaderManager = nullptr; + } } bool AddInstanceBinder(Ptr binder)override @@ -3157,36 +3166,39 @@ GuiPredefinedInstanceBindersPlugin GUI_PLUGIN_DEPEND(GacUI_Instance_Reflection); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - WorkflowAstLoadTypes(); - GuiInstanceQueryAstLoadTypes(); + if (controllerUnrelatedPlugins) { - auto workflowParser = Ptr(new workflow::Parser); + WorkflowAstLoadTypes(); + GuiInstanceQueryAstLoadTypes(); + { + auto workflowParser = Ptr(new workflow::Parser); - IGuiParserManager* manager = GetParserManager(); - manager->SetParser(L"WORKFLOW-TYPE", Ptr(new GuiParser_WorkflowType(workflowParser))); - manager->SetParser(L"WORKFLOW-EXPRESSION", Ptr(new GuiParser_WorkflowExpression(workflowParser))); - manager->SetParser(L"WORKFLOW-STATEMENT", Ptr(new GuiParser_WorkflowStatement(workflowParser))); - manager->SetParser(L"WORKFLOW-COPROVIDER-STATEMENT", Ptr(new GuiParser_WorkflowCoProviderStatement(workflowParser))); - manager->SetParser(L"WORKFLOW-DECLARATION", Ptr(new GuiParser_WorkflowDeclaration(workflowParser))); - manager->SetParser(L"WORKFLOW-MODULE", Ptr(new GuiParser_WorkflowModule(workflowParser))); - manager->SetParser(L"INSTANCE-QUERY", Ptr(new GuiParser_InstanceQuery)); - } - { - IGuiInstanceLoaderManager* manager=GetInstanceLoaderManager(); + IGuiParserManager* manager = GetParserManager(); + manager->SetParser(L"WORKFLOW-TYPE", Ptr(new GuiParser_WorkflowType(workflowParser))); + manager->SetParser(L"WORKFLOW-EXPRESSION", Ptr(new GuiParser_WorkflowExpression(workflowParser))); + manager->SetParser(L"WORKFLOW-STATEMENT", Ptr(new GuiParser_WorkflowStatement(workflowParser))); + manager->SetParser(L"WORKFLOW-COPROVIDER-STATEMENT", Ptr(new GuiParser_WorkflowCoProviderStatement(workflowParser))); + manager->SetParser(L"WORKFLOW-DECLARATION", Ptr(new GuiParser_WorkflowDeclaration(workflowParser))); + manager->SetParser(L"WORKFLOW-MODULE", Ptr(new GuiParser_WorkflowModule(workflowParser))); + manager->SetParser(L"INSTANCE-QUERY", Ptr(new GuiParser_InstanceQuery)); + } + { + IGuiInstanceLoaderManager* manager = GetInstanceLoaderManager(); - manager->AddInstanceBinder(Ptr(new GuiResourceInstanceBinder)); - manager->AddInstanceBinder(Ptr(new GuiReferenceInstanceBinder)); - manager->AddInstanceBinder(Ptr(new GuiEvalInstanceBinder)); - manager->AddInstanceBinder(Ptr(new GuiBindInstanceBinder)); - manager->AddInstanceBinder(Ptr(new GuiFormatInstanceBinder)); - manager->AddInstanceBinder(Ptr(new GuiLocalizedStringInstanceBinder)); - manager->AddInstanceEventBinder(Ptr(new GuiEvalInstanceEventBinder)); + manager->AddInstanceBinder(Ptr(new GuiResourceInstanceBinder)); + manager->AddInstanceBinder(Ptr(new GuiReferenceInstanceBinder)); + manager->AddInstanceBinder(Ptr(new GuiEvalInstanceBinder)); + manager->AddInstanceBinder(Ptr(new GuiBindInstanceBinder)); + manager->AddInstanceBinder(Ptr(new GuiFormatInstanceBinder)); + manager->AddInstanceBinder(Ptr(new GuiLocalizedStringInstanceBinder)); + manager->AddInstanceEventBinder(Ptr(new GuiEvalInstanceEventBinder)); + } } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -4020,15 +4032,18 @@ GuiPredefinedInstanceDeserializersPlugin GUI_PLUGIN_DEPEND(GacUI_Instance); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - IGuiInstanceLoaderManager* manager = GetInstanceLoaderManager(); - manager->AddInstanceDeserializer(Ptr(new GuiTemplatePropertyDeserializer)); - manager->AddInstanceDeserializer(Ptr(new GuiItemPropertyDeserializer)); - manager->AddInstanceDeserializer(Ptr(new GuiDataProcessorDeserializer)); + if (controllerUnrelatedPlugins) + { + IGuiInstanceLoaderManager* manager = GetInstanceLoaderManager(); + manager->AddInstanceDeserializer(Ptr(new GuiTemplatePropertyDeserializer)); + manager->AddInstanceDeserializer(Ptr(new GuiItemPropertyDeserializer)); + manager->AddInstanceDeserializer(Ptr(new GuiDataProcessorDeserializer)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -4950,17 +4965,20 @@ Plugin GUI_PLUGIN_DEPEND(GacUI_Res_ResourceResolver); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - IGuiResourceResolverManager* manager = GetResourceResolverManager(); - manager->SetTypeResolver(Ptr(new GuiResourceSharedScriptTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceInstanceTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceInstanceStyleTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceAnimationTypeResolver)); - manager->SetTypeResolver(Ptr(new GuiResourceLocalizedStringsTypeResolver)); + if (controllerUnrelatedPlugins) + { + IGuiResourceResolverManager* manager = GetResourceResolverManager(); + manager->SetTypeResolver(Ptr(new GuiResourceSharedScriptTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceInstanceTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceInstanceStyleTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceAnimationTypeResolver)); + manager->SetTypeResolver(Ptr(new GuiResourceLocalizedStringsTypeResolver)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -8955,103 +8973,105 @@ GuiPredefinedInstanceLoadersPlugin GUI_PLUGIN_DEPEND(GacUI_Instance_Reflection); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - #ifndef VCZH_DEBUG_NO_REFLECTION - IGuiInstanceLoaderManager* manager=GetInstanceLoaderManager(); +#ifndef VCZH_DEBUG_NO_REFLECTION + if (controllerUnrelatedPlugins) + { + IGuiInstanceLoaderManager* manager=GetInstanceLoaderManager(); - #define ADD_TEMPLATE_CONTROL(TYPENAME, THEME_NAME)\ - manager->SetLoader(\ - Ptr(new GuiTemplateControlInstanceLoader(\ - L"presentation::controls::" L ## #TYPENAME,\ - theme::ThemeName::THEME_NAME\ - )\ - )) +#define ADD_TEMPLATE_CONTROL(TYPENAME, THEME_NAME)\ + manager->SetLoader(\ + Ptr(new GuiTemplateControlInstanceLoader(\ + L"presentation::controls::" L ## #TYPENAME,\ + theme::ThemeName::THEME_NAME\ + )\ + )) - #define ADD_VIRTUAL_CONTROL(VIRTUALTYPENAME, TYPENAME, THEME_NAME)\ - manager->CreateVirtualType(GlobalStringKey::Get(description::TypeInfo::content.typeName),\ - Ptr(new GuiTemplateControlInstanceLoader(\ - L"presentation::controls::Gui" L ## #VIRTUALTYPENAME,\ - theme::ThemeName::THEME_NAME\ - )\ - )) +#define ADD_VIRTUAL_CONTROL(VIRTUALTYPENAME, TYPENAME, THEME_NAME)\ + manager->CreateVirtualType(GlobalStringKey::Get(description::TypeInfo::content.typeName),\ + Ptr(new GuiTemplateControlInstanceLoader(\ + L"presentation::controls::Gui" L ## #VIRTUALTYPENAME,\ + theme::ThemeName::THEME_NAME\ + )\ + )) - #define ADD_VIRTUAL_CONTROL_F(VIRTUALTYPENAME, TYPENAME, THEME_NAME, INIT_FUNCTION)\ - manager->CreateVirtualType(GlobalStringKey::Get(description::TypeInfo::content.typeName),\ - Ptr(new GuiTemplateControlInstanceLoader(\ - L"presentation::controls::Gui" L ## #VIRTUALTYPENAME,\ - theme::ThemeName::THEME_NAME,\ - nullptr,\ - INIT_FUNCTION\ - )\ - )) +#define ADD_VIRTUAL_CONTROL_F(VIRTUALTYPENAME, TYPENAME, THEME_NAME, INIT_FUNCTION)\ + manager->CreateVirtualType(GlobalStringKey::Get(description::TypeInfo::content.typeName),\ + Ptr(new GuiTemplateControlInstanceLoader(\ + L"presentation::controls::Gui" L ## #VIRTUALTYPENAME,\ + theme::ThemeName::THEME_NAME,\ + nullptr,\ + INIT_FUNCTION\ + )\ + )) - manager->SetLoader(Ptr(new GuiControlInstanceLoader)); + manager->SetLoader(Ptr(new GuiControlInstanceLoader)); - /* REAL-CONTROL-TYPE THEME-NAME */ - ADD_TEMPLATE_CONTROL ( GuiCustomControl, CustomControl ); - ADD_TEMPLATE_CONTROL ( GuiLabel, Label ); - ADD_TEMPLATE_CONTROL ( GuiButton, Button ); - ADD_TEMPLATE_CONTROL ( GuiTabPage, CustomControl ); - ADD_TEMPLATE_CONTROL ( GuiTab, Tab ); - ADD_TEMPLATE_CONTROL ( GuiScrollContainer, ScrollView ); - ADD_TEMPLATE_CONTROL ( GuiWindow, Window ); - ADD_TEMPLATE_CONTROL ( GuiTextList, TextList ); - ADD_TEMPLATE_CONTROL ( GuiBindableTextList, TextList ); - ADD_TEMPLATE_CONTROL ( GuiListView, ListView ); - ADD_TEMPLATE_CONTROL ( GuiBindableListView, ListView ); - ADD_TEMPLATE_CONTROL ( GuiBindableDataGrid, ListView ); - ADD_TEMPLATE_CONTROL ( GuiMultilineTextBox, MultilineTextBox ); - ADD_TEMPLATE_CONTROL ( GuiSinglelineTextBox, SinglelineTextBox ); - ADD_TEMPLATE_CONTROL ( GuiDatePicker, DatePicker ); - ADD_TEMPLATE_CONTROL ( GuiDateComboBox, DateComboBox ); - ADD_TEMPLATE_CONTROL ( GuiRibbonTab, RibbonTab ); - ADD_TEMPLATE_CONTROL ( GuiRibbonTabPage, CustomControl ); - ADD_TEMPLATE_CONTROL ( GuiRibbonGroup, RibbonGroup ); - ADD_TEMPLATE_CONTROL ( GuiRibbonIconLabel, RibbonIconLabel ); - ADD_TEMPLATE_CONTROL ( GuiRibbonToolstrips, RibbonToolstrips ); - ADD_TEMPLATE_CONTROL ( GuiRibbonGallery, RibbonGallery ); - ADD_TEMPLATE_CONTROL ( GuiBindableRibbonGalleryList, RibbonGalleryList ); + /* REAL-CONTROL-TYPE THEME-NAME */ + ADD_TEMPLATE_CONTROL ( GuiCustomControl, CustomControl ); + ADD_TEMPLATE_CONTROL ( GuiLabel, Label ); + ADD_TEMPLATE_CONTROL ( GuiButton, Button ); + ADD_TEMPLATE_CONTROL ( GuiTabPage, CustomControl ); + ADD_TEMPLATE_CONTROL ( GuiTab, Tab ); + ADD_TEMPLATE_CONTROL ( GuiScrollContainer, ScrollView ); + ADD_TEMPLATE_CONTROL ( GuiWindow, Window ); + ADD_TEMPLATE_CONTROL ( GuiTextList, TextList ); + ADD_TEMPLATE_CONTROL ( GuiBindableTextList, TextList ); + ADD_TEMPLATE_CONTROL ( GuiListView, ListView ); + ADD_TEMPLATE_CONTROL ( GuiBindableListView, ListView ); + ADD_TEMPLATE_CONTROL ( GuiBindableDataGrid, ListView ); + ADD_TEMPLATE_CONTROL ( GuiMultilineTextBox, MultilineTextBox ); + ADD_TEMPLATE_CONTROL ( GuiSinglelineTextBox, SinglelineTextBox ); + ADD_TEMPLATE_CONTROL ( GuiDatePicker, DatePicker ); + ADD_TEMPLATE_CONTROL ( GuiDateComboBox, DateComboBox ); + ADD_TEMPLATE_CONTROL ( GuiRibbonTab, RibbonTab ); + ADD_TEMPLATE_CONTROL ( GuiRibbonTabPage, CustomControl ); + ADD_TEMPLATE_CONTROL ( GuiRibbonGroup, RibbonGroup ); + ADD_TEMPLATE_CONTROL ( GuiRibbonIconLabel, RibbonIconLabel ); + ADD_TEMPLATE_CONTROL ( GuiRibbonToolstrips, RibbonToolstrips ); + ADD_TEMPLATE_CONTROL ( GuiRibbonGallery, RibbonGallery ); + ADD_TEMPLATE_CONTROL ( GuiBindableRibbonGalleryList, RibbonGalleryList ); - /* VIRTUAL-CONTROL-TYPE REAL-CONTROL-TYPE THEME-NAME */ - ADD_VIRTUAL_CONTROL (GroupBox, GuiControl, GroupBox ); - ADD_VIRTUAL_CONTROL (MenuSplitter, GuiControl, MenuSplitter ); - ADD_VIRTUAL_CONTROL (MenuBarButton, GuiToolstripButton, MenuBarButton ); - ADD_VIRTUAL_CONTROL (MenuItemButton, GuiToolstripButton, MenuItemButton ); - ADD_VIRTUAL_CONTROL (ToolstripDropdownButton, GuiToolstripButton, ToolstripDropdownButton ); - ADD_VIRTUAL_CONTROL (ToolstripSplitButton, GuiToolstripButton, ToolstripSplitButton ); - ADD_VIRTUAL_CONTROL (ToolstripSplitter, GuiControl, ToolstripSplitter ); - ADD_VIRTUAL_CONTROL (RibbonSmallButton, GuiToolstripButton, RibbonSmallButton ); - ADD_VIRTUAL_CONTROL (RibbonSmallDropdownButton, GuiToolstripButton, RibbonSmallDropdownButton ); - ADD_VIRTUAL_CONTROL (RibbonSmallSplitButton, GuiToolstripButton, RibbonSmallSplitButton ); - ADD_VIRTUAL_CONTROL (RibbonLargeButton, GuiToolstripButton, RibbonLargeButton ); - ADD_VIRTUAL_CONTROL (RibbonLargeDropdownButton, GuiToolstripButton, RibbonLargeDropdownButton ); - ADD_VIRTUAL_CONTROL (RibbonLargeSplitButton, GuiToolstripButton, RibbonLargeSplitButton ); - ADD_VIRTUAL_CONTROL (RibbonSmallIconLabel, GuiRibbonIconLabel, RibbonSmallIconLabel ); - ADD_VIRTUAL_CONTROL (RibbonSplitter, GuiControl, RibbonSplitter ); - ADD_VIRTUAL_CONTROL (RibbonToolstripHeader, GuiControl, RibbonToolstripHeader ); - ADD_VIRTUAL_CONTROL (CheckBox, GuiSelectableButton, CheckBox ); - ADD_VIRTUAL_CONTROL (RadioButton, GuiSelectableButton, RadioButton ); - ADD_VIRTUAL_CONTROL (HScroll, GuiScroll, HScroll ); - ADD_VIRTUAL_CONTROL (VScroll, GuiScroll, VScroll ); - ADD_VIRTUAL_CONTROL (DocumentTextBox, GuiDocumentLabel, DocumentTextBox ); - ADD_VIRTUAL_CONTROL_F (HTracker, GuiScroll, HTracker, InitializeTrackerProgressBar); - ADD_VIRTUAL_CONTROL_F (VTracker, GuiScroll, VTracker, InitializeTrackerProgressBar); - ADD_VIRTUAL_CONTROL_F (ProgressBar, GuiScroll, ProgressBar, InitializeTrackerProgressBar); + /* VIRTUAL-CONTROL-TYPE REAL-CONTROL-TYPE THEME-NAME */ + ADD_VIRTUAL_CONTROL (GroupBox, GuiControl, GroupBox ); + ADD_VIRTUAL_CONTROL (MenuSplitter, GuiControl, MenuSplitter ); + ADD_VIRTUAL_CONTROL (MenuBarButton, GuiToolstripButton, MenuBarButton ); + ADD_VIRTUAL_CONTROL (MenuItemButton, GuiToolstripButton, MenuItemButton ); + ADD_VIRTUAL_CONTROL (ToolstripDropdownButton, GuiToolstripButton, ToolstripDropdownButton ); + ADD_VIRTUAL_CONTROL (ToolstripSplitButton, GuiToolstripButton, ToolstripSplitButton ); + ADD_VIRTUAL_CONTROL (ToolstripSplitter, GuiControl, ToolstripSplitter ); + ADD_VIRTUAL_CONTROL (RibbonSmallButton, GuiToolstripButton, RibbonSmallButton ); + ADD_VIRTUAL_CONTROL (RibbonSmallDropdownButton, GuiToolstripButton, RibbonSmallDropdownButton ); + ADD_VIRTUAL_CONTROL (RibbonSmallSplitButton, GuiToolstripButton, RibbonSmallSplitButton ); + ADD_VIRTUAL_CONTROL (RibbonLargeButton, GuiToolstripButton, RibbonLargeButton ); + ADD_VIRTUAL_CONTROL (RibbonLargeDropdownButton, GuiToolstripButton, RibbonLargeDropdownButton ); + ADD_VIRTUAL_CONTROL (RibbonLargeSplitButton, GuiToolstripButton, RibbonLargeSplitButton ); + ADD_VIRTUAL_CONTROL (RibbonSmallIconLabel, GuiRibbonIconLabel, RibbonSmallIconLabel ); + ADD_VIRTUAL_CONTROL (RibbonSplitter, GuiControl, RibbonSplitter ); + ADD_VIRTUAL_CONTROL (RibbonToolstripHeader, GuiControl, RibbonToolstripHeader ); + ADD_VIRTUAL_CONTROL (CheckBox, GuiSelectableButton, CheckBox ); + ADD_VIRTUAL_CONTROL (RadioButton, GuiSelectableButton, RadioButton ); + ADD_VIRTUAL_CONTROL (HScroll, GuiScroll, HScroll ); + ADD_VIRTUAL_CONTROL (VScroll, GuiScroll, VScroll ); + ADD_VIRTUAL_CONTROL (DocumentTextBox, GuiDocumentLabel, DocumentTextBox ); + ADD_VIRTUAL_CONTROL_F (HTracker, GuiScroll, HTracker, InitializeTrackerProgressBar); + ADD_VIRTUAL_CONTROL_F (VTracker, GuiScroll, VTracker, InitializeTrackerProgressBar); + ADD_VIRTUAL_CONTROL_F (ProgressBar, GuiScroll, ProgressBar, InitializeTrackerProgressBar); - LoadToolstripControls(manager); - LoadListControls(manager); - LoadDocumentControls(manager); - LoadCompositions(manager); - LoadTemplates(manager); - - #undef ADD_TEMPLATE_CONTROL - #undef ADD_VIRTUAL_CONTROL - #undef ADD_VIRTUAL_CONTROL_F - #endif + LoadToolstripControls(manager); + LoadListControls(manager); + LoadDocumentControls(manager); + LoadCompositions(manager); + LoadTemplates(manager); + } +#undef ADD_TEMPLATE_CONTROL +#undef ADD_VIRTUAL_CONTROL +#undef ADD_VIRTUAL_CONTROL_F +#endif } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -10498,10 +10518,10 @@ CheckRemoteProtocolSchema void Visit(GuiRpReferenceType* node) override { - if (!symbols->enumDecls.Keys().Contains(node->name.value) && !symbols->structDecls.Keys().Contains(node->name.value)) - { - errors.Add({ node->name.codeRange,L"Custom type \"" + node->name.value + L"\" not found." }); - } + if (symbols->enumDecls.Keys().Contains(node->name.value)) return; + if (symbols->unionDecls.Keys().Contains(node->name.value)) return; + if (symbols->structDecls.Keys().Contains(node->name.value)) return; + errors.Add({ node->name.codeRange,L"Custom type \"" + node->name.value + L"\" not found." }); } void Visit(GuiRpOptionalType* node) override @@ -10514,6 +10534,32 @@ CheckRemoteProtocolSchema node->element->Accept(this); } + void Visit(GuiRpArrayMapType* node) override + { + vint index = symbols->structDecls.Keys().IndexOf(node->element.value); + if (index == -1) + { + errors.Add({ node->element.codeRange,L"Struct \"" + node->element.value + L"\" not found in a map." }); + return; + } + + auto structDecl = symbols->structDecls.Values()[index]; + auto fieldDecl = From(structDecl->members) + .Where([&](auto&& member) { return member->name.value == node->keyField.value; }) + .First({}); + if (!fieldDecl) + { + errors.Add({ node->keyField.codeRange,L"Struct \"" + node->element.value + L"\" does not contain field " + node->keyField.value + L"\" required in a map." }); + return; + } + } + + void Visit(GuiRpMapType* node) override + { + node->element->Accept(this); + node->keyType->Accept(this); + } + // GuiRpDeclaration::IVisitor bool EnsureTypeUndefined(const glr::ParsingToken& name) @@ -10523,6 +10569,11 @@ CheckRemoteProtocolSchema errors.Add({ name.codeRange,L"Enum \"" + name.value + L"\" already defined." }); return false; } + if (symbols->unionDecls.Keys().Contains(name.value)) + { + errors.Add({ name.codeRange,L"Union \"" + name.value + L"\" already defined." }); + return false; + } if (symbols->structDecls.Keys().Contains(name.value)) { errors.Add({ name.codeRange,L"Struct \"" + name.value + L"\" already defined." }); @@ -10588,9 +10639,51 @@ CheckRemoteProtocolSchema symbols->enumDecls.Add(node->name.value, node); } + void Visit(GuiRpUnionDecl* node) override + { + if (!EnsureTypeUndefined(node->name)) return; + + SortedList memberNames; + for (auto member : node->members) + { + if (memberNames.Contains(member->name.value)) + { + errors.Add({ member->name.codeRange,L"Union member \"" + node->name.value + L"::" + member->name.value + L"\" already exists." }); + } + else + { + memberNames.Add(member->name.value); + + vint index = symbols->structDecls.Keys().IndexOf(member->name.value); + if (index == -1) + { + errors.Add({ member->name.codeRange,L"Struct \"" + member->name.value + L"\" not found in union " + node->name.value + L"\"." }); + return; + } + + auto structDecl = symbols->structDecls.Values()[index]; + if (structDecl->type != GuiRpStructType::Struct) + { + errors.Add({ member->name.codeRange,L"Struct \"" + member->name.value + L"\" in union " + node->name.value + L"\" should not be a class." }); + return; + } + } + } + + for (auto att : node->attributes) + { + errors.Add({ att->name.codeRange,L"Unsupported attribute: \"" + att->name.value + L"\" on union \"" + node->name.value + L"\"." }); + } + symbols->unionDecls.Add(node->name.value, node); + } + void Visit(GuiRpStructDecl* node) override { if (!EnsureTypeUndefined(node->name)) return; + if (node->type == GuiRpStructType::Class) + { + symbols->structDecls.Add(node->name.value, node); + } SortedList memberNames; for (auto member : node->members) @@ -10628,7 +10721,11 @@ CheckRemoteProtocolSchema errors.Add({ att->name.codeRange,L"Unsupported attribute: \"" + att->name.value + L"\" on struct \"" + node->name.value + L"\"." }); } } - symbols->structDecls.Add(node->name.value, node); + + if (node->type == GuiRpStructType::Struct) + { + symbols->structDecls.Add(node->name.value, node); + } } void VisitDropAttribute(Ptr att, const WString& name, SortedList& names) @@ -10776,24 +10873,55 @@ GenerateRemoteProtocolHeaderFile case GuiRpPrimitiveTypes::Color: writer.WriteString(L"::vl::presentation::Color"); break; + case GuiRpPrimitiveTypes::Binary: + writer.WriteString(L"::vl::Ptr<::vl::stream::MemoryStream>"); + break; default: CHECK_FAIL(L"Unrecognized type"); } } - static WString GetCppType(const WString& type, Ptr symbols, GuiRpCppConfig& config) + static WString GetCppType(const WString& type, Ptr symbols, GuiRpCppConfig& config, bool forJson = false) { - vint index = symbols->cppMapping.Keys().IndexOf(type); - if (index == -1) + bool ptr = false; + if (!forJson) { - return L"::" + config.cppNamespace + L"::" + type; + vint index = symbols->structDecls.Keys().IndexOf(type); + if (index != -1) + { + auto structDecl = symbols->structDecls.Values()[index]; + ptr = structDecl->type == GuiRpStructType::Class; + } + } + + WString result; + { + vint index = symbols->cppMapping.Keys().IndexOf(type); + if (index == -1) + { + result = L"::" + config.cppNamespace + L"::" + type; + } + else + { + result = symbols->cppMapping.Values()[index]; + } + } + + if (ptr) + { + return L"::vl::Ptr<" + result + L">"; } else { - return symbols->cppMapping.Values()[index]; + return result; } } + static WString GetCppTypeForJson(const WString& type, Ptr symbols, GuiRpCppConfig& config) + { + return GetCppType(type, symbols, config, true); + } + static WString GetCppNamespace(const WString& type, Ptr symbols, GuiRpCppConfig& config) { vint index = symbols->cppNamespaces.Keys().IndexOf(type); @@ -10825,6 +10953,33 @@ GenerateRemoteProtocolHeaderFile node->element->Accept(this); writer.WriteString(L">>"); } + + void Visit(GuiRpArrayMapType* node) override + { + auto cppName = GetCppType(node->element.value, symbols, config); + auto structDecl = symbols->structDecls[node->element.value]; + auto fieldDecl = From(structDecl->members) + .Where([&](auto&& member) { return member->name.value == node->keyField.value; }) + .First(); + writer.WriteString(L"::vl::Ptr<::vl::presentation::remoteprotocol::ArrayMap<"); + fieldDecl->type->Accept(this); + writer.WriteString(L", "); + writer.WriteString(cppName); + writer.WriteString(L", &"); + writer.WriteString(cppName); + writer.WriteString(L"::"); + writer.WriteString(node->keyField.value); + writer.WriteString(L">>"); + } + + void Visit(GuiRpMapType* node) override + { + writer.WriteString(L"::vl::Ptr<::vl::collections::Dictionary<"); + node->keyType->Accept(this); + writer.WriteString(L", "); + node->element->Accept(this); + writer.WriteString(L">>"); + } }; void GenerateSerializerFunctionHeader(const WString& type, bool semicolon, stream::TextWriter& writer) @@ -10851,6 +11006,29 @@ GenerateRemoteProtocolHeaderFile writer.WriteLine(L""); writer.WriteLine(L"#include \"" + config.headerInclude + L"\""); writer.WriteLine(L""); + + auto structDecls = From(schema->declarations).FindType(); + + writer.WriteLine(L"namespace " + config.cppNamespace); + writer.WriteLine(L"{"); + for (auto structDecl : structDecls) + { + if (!symbols->cppMapping.Keys().Contains(structDecl->name.value)) + { + writer.WriteLine(L"\tstruct " + structDecl->name.value + L";"); + } + } + writer.WriteLine(L"}"); + + writer.WriteLine(L"namespace vl::presentation::remoteprotocol"); + writer.WriteLine(L"{"); + for (auto structDecl : structDecls) + { + WString cppName = GuiRpPrintTypeVisitor::GetCppType(structDecl->name.value, symbols, config); + writer.WriteLine(L"\ttemplate<> struct JsonNameHelper<" + cppName + L"> { static constexpr const wchar_t* Name = L\"" + structDecl->name.value + L"\"; };"); + } + writer.WriteLine(L"}"); + writer.WriteLine(L"namespace " + config.cppNamespace); writer.WriteLine(L"{"); @@ -10871,6 +11049,28 @@ GenerateRemoteProtocolHeaderFile } } + for (auto unionDecl : From(schema->declarations).FindType()) + { + if (!symbols->cppMapping.Keys().Contains(unionDecl->name.value)) + { + writer.WriteLine(L"\tusing " + unionDecl->name.value + L" = ::vl::Variant<"); + for (auto [member, index] : indexed(unionDecl->members)) + { + writer.WriteString(L"\t\t" + GuiRpPrintTypeVisitor::GetCppType(member->name.value, symbols, config)); + if (index < unionDecl->members.Count() - 1) + { + writer.WriteLine(L","); + } + else + { + writer.WriteLine(L""); + } + } + writer.WriteLine(L"\t>;"); + writer.WriteLine(L""); + } + } + for (auto structDecl : From(schema->declarations).FindType()) { if (!symbols->cppMapping.Keys().Contains(structDecl->name.value)) @@ -10894,7 +11094,7 @@ GenerateRemoteProtocolHeaderFile } for (auto structDecl : From(schema->declarations).FindType()) { - GenerateSerializerFunctionHeader(GuiRpPrintTypeVisitor::GetCppType(structDecl->name.value, symbols, config), true, writer); + GenerateSerializerFunctionHeader(GuiRpPrintTypeVisitor::GetCppTypeForJson(structDecl->name.value, symbols, config), true, writer); } writer.WriteLine(L""); @@ -10904,7 +11104,7 @@ GenerateRemoteProtocolHeaderFile } for (auto structDecl : From(schema->declarations).FindType()) { - GenerateDeserializerFunctionHeader(GuiRpPrintTypeVisitor::GetCppType(structDecl->name.value, symbols, config), true, writer); + GenerateDeserializerFunctionHeader(GuiRpPrintTypeVisitor::GetCppTypeForJson(structDecl->name.value, symbols, config), true, writer); } writer.WriteLine(L""); @@ -11057,7 +11257,7 @@ GenerateRemoteProtocolCppFile void GenerateStructSerializerFunctionImpl(Ptr structDecl, Ptr symbols, GuiRpCppConfig& config, stream::TextWriter& writer) { - WString cppName = GuiRpPrintTypeVisitor::GetCppType(structDecl->name.value, symbols, config); + WString cppName = GuiRpPrintTypeVisitor::GetCppTypeForJson(structDecl->name.value, symbols, config); GenerateSerializerFunctionHeader(cppName, false, writer); writer.WriteLine(L"\t{"); writer.WriteLine(L"\t\tauto node = Ptr(new glr::json::JsonObject);"); @@ -11091,7 +11291,7 @@ GenerateRemoteProtocolCppFile void GenerateStructDeserializerFunctionImpl(Ptr structDecl, Ptr symbols, GuiRpCppConfig& config, stream::TextWriter& writer) { - WString cppName = GuiRpPrintTypeVisitor::GetCppType(structDecl->name.value, symbols, config); + WString cppName = GuiRpPrintTypeVisitor::GetCppTypeForJson(structDecl->name.value, symbols, config); GenerateDeserializerFunctionHeader(cppName, false, writer); writer.WriteLine(L"\t{"); writer.WriteLine(L"#define ERROR_MESSAGE_PREFIX L\"vl::presentation::remoteprotocol::ConvertJsonToCustomType<" + cppName + L">(Ptr, " + cppName + L"&)#\""); @@ -11180,11 +11380,26 @@ Visitor Pattern Implementation visitor->Visit(this); } + void GuiRpArrayMapType::Accept(GuiRpType::IVisitor* visitor) + { + visitor->Visit(this); + } + + void GuiRpMapType::Accept(GuiRpType::IVisitor* visitor) + { + visitor->Visit(this); + } + void GuiRpEnumDecl::Accept(GuiRpDeclaration::IVisitor* visitor) { visitor->Visit(this); } + void GuiRpUnionDecl::Accept(GuiRpDeclaration::IVisitor* visitor) + { + visitor->Visit(this); + } + void GuiRpStructDecl::Accept(GuiRpDeclaration::IVisitor* visitor) { visitor->Visit(this); @@ -11211,12 +11426,17 @@ namespace vl::reflection::description IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpReferenceType, presentation::remoteprotocol::GuiRpReferenceType) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpOptionalType, presentation::remoteprotocol::GuiRpOptionalType) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpArrayType, presentation::remoteprotocol::GuiRpArrayType) + IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpArrayMapType, presentation::remoteprotocol::GuiRpArrayMapType) + IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpMapType, presentation::remoteprotocol::GuiRpMapType) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpAttribute, presentation::remoteprotocol::GuiRpAttribute) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpDeclaration, presentation::remoteprotocol::GuiRpDeclaration) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor, presentation::remoteprotocol::GuiRpDeclaration::IVisitor) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpEnumMember, presentation::remoteprotocol::GuiRpEnumMember) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpEnumDecl, presentation::remoteprotocol::GuiRpEnumDecl) + IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpUnionMember, presentation::remoteprotocol::GuiRpUnionMember) + IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpUnionDecl, presentation::remoteprotocol::GuiRpUnionDecl) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpStructMember, presentation::remoteprotocol::GuiRpStructMember) + IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpStructType, presentation::remoteprotocol::GuiRpStructType) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpStructDecl, presentation::remoteprotocol::GuiRpStructDecl) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpMessageRequest, presentation::remoteprotocol::GuiRpMessageRequest) IMPL_TYPE_INFO_RENAME(vl::presentation::remoteprotocol::GuiRpMessageResponse, presentation::remoteprotocol::GuiRpMessageResponse) @@ -11242,6 +11462,7 @@ namespace vl::reflection::description ENUM_NAMESPACE_ITEM(Char) ENUM_NAMESPACE_ITEM(Key) ENUM_NAMESPACE_ITEM(Color) + ENUM_NAMESPACE_ITEM(Binary) END_ENUM_ITEM(vl::presentation::remoteprotocol::GuiRpPrimitiveTypes) BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpPrimitiveType) @@ -11276,6 +11497,24 @@ namespace vl::reflection::description CLASS_MEMBER_FIELD(element) END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpArrayType) + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpArrayMapType) + CLASS_MEMBER_BASE(vl::presentation::remoteprotocol::GuiRpType) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(element) + CLASS_MEMBER_FIELD(keyField) + END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpArrayMapType) + + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpMapType) + CLASS_MEMBER_BASE(vl::presentation::remoteprotocol::GuiRpType) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(element) + CLASS_MEMBER_FIELD(keyType) + END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpMapType) + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpAttribute) CLASS_MEMBER_BASE(vl::glr::ParsingAstBase) @@ -11308,6 +11547,22 @@ namespace vl::reflection::description CLASS_MEMBER_FIELD(members) END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpEnumDecl) + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpUnionMember) + CLASS_MEMBER_BASE(vl::glr::ParsingAstBase) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(name) + END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpUnionMember) + + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpUnionDecl) + CLASS_MEMBER_BASE(vl::presentation::remoteprotocol::GuiRpDeclaration) + + CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + + CLASS_MEMBER_FIELD(members) + END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpUnionDecl) + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpStructMember) CLASS_MEMBER_BASE(vl::glr::ParsingAstBase) @@ -11317,11 +11572,18 @@ namespace vl::reflection::description CLASS_MEMBER_FIELD(type) END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpStructMember) + BEGIN_ENUM_ITEM(vl::presentation::remoteprotocol::GuiRpStructType) + ENUM_ITEM_NAMESPACE(vl::presentation::remoteprotocol::GuiRpStructType) + ENUM_NAMESPACE_ITEM(Struct) + ENUM_NAMESPACE_ITEM(Class) + END_ENUM_ITEM(vl::presentation::remoteprotocol::GuiRpStructType) + BEGIN_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpStructDecl) CLASS_MEMBER_BASE(vl::presentation::remoteprotocol::GuiRpDeclaration) CLASS_MEMBER_CONSTRUCTOR(vl::Ptr(), NO_PARAMETER) + CLASS_MEMBER_FIELD(type) CLASS_MEMBER_FIELD(members) END_CLASS_MEMBER(vl::presentation::remoteprotocol::GuiRpStructDecl) @@ -11379,10 +11641,13 @@ namespace vl::reflection::description CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpType::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpReferenceType* node)) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpType::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpOptionalType* node)) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpType::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpArrayType* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpType::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpArrayMapType* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpType::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpMapType* node)) END_INTERFACE_MEMBER(vl::presentation::remoteprotocol::GuiRpType) BEGIN_INTERFACE_MEMBER(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpEnumDecl* node)) + CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpUnionDecl* node)) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpStructDecl* node)) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpMessageDecl* node)) CLASS_MEMBER_METHOD_OVERLOAD(Visit, {L"node"}, void(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor::*)(vl::presentation::remoteprotocol::GuiRpEventDecl* node)) @@ -11403,12 +11668,17 @@ namespace vl::reflection::description ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpReferenceType) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpOptionalType) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpArrayType) + ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpArrayMapType) + ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMapType) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpAttribute) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpDeclaration) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpEnumMember) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpEnumDecl) + ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpUnionMember) + ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpUnionDecl) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructMember) + ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructType) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructDecl) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMessageRequest) ADD_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMessageResponse) @@ -11451,6 +11721,15 @@ Licensed under https://github.com/vczh-libraries/License namespace vl::presentation::remoteprotocol::json_visitor { + void AstVisitor::PrintFields(GuiRpArrayMapType* node) + { + BeginField(L"element"); + WriteToken(node->element); + EndField(); + BeginField(L"keyField"); + WriteToken(node->keyField); + EndField(); + } void AstVisitor::PrintFields(GuiRpArrayType* node) { BeginField(L"element"); @@ -11513,6 +11792,15 @@ namespace vl::presentation::remoteprotocol::json_visitor Print(node->type.Obj()); EndField(); } + void AstVisitor::PrintFields(GuiRpMapType* node) + { + BeginField(L"element"); + Print(node->element.Obj()); + EndField(); + BeginField(L"keyType"); + Print(node->keyType.Obj()); + EndField(); + } void AstVisitor::PrintFields(GuiRpMessageDecl* node) { BeginField(L"request"); @@ -11545,6 +11833,9 @@ namespace vl::presentation::remoteprotocol::json_visitor BeginField(L"type"); switch (node->type) { + case vl::presentation::remoteprotocol::GuiRpPrimitiveTypes::Binary: + WriteString(L"Binary"); + break; case vl::presentation::remoteprotocol::GuiRpPrimitiveTypes::Boolean: WriteString(L"Boolean"); break; @@ -11605,6 +11896,19 @@ namespace vl::presentation::remoteprotocol::json_visitor } EndArray(); EndField(); + BeginField(L"type"); + switch (node->type) + { + case vl::presentation::remoteprotocol::GuiRpStructType::Class: + WriteString(L"Class"); + break; + case vl::presentation::remoteprotocol::GuiRpStructType::Struct: + WriteString(L"Struct"); + break; + default: + WriteNull(); + } + EndField(); } void AstVisitor::PrintFields(GuiRpStructMember* node) { @@ -11618,6 +11922,25 @@ namespace vl::presentation::remoteprotocol::json_visitor void AstVisitor::PrintFields(GuiRpType* node) { } + void AstVisitor::PrintFields(GuiRpUnionDecl* node) + { + BeginField(L"members"); + BeginArray(); + for (auto&& listItem : node->members) + { + BeginArrayItem(); + Print(listItem.Obj()); + EndArrayItem(); + } + EndArray(); + EndField(); + } + void AstVisitor::PrintFields(GuiRpUnionMember* node) + { + BeginField(L"name"); + WriteToken(node->name); + EndField(); + } void AstVisitor::Visit(GuiRpPrimitiveType* node) { @@ -11675,6 +11998,34 @@ namespace vl::presentation::remoteprotocol::json_visitor EndObject(); } + void AstVisitor::Visit(GuiRpArrayMapType* node) + { + if (!node) + { + WriteNull(); + return; + } + BeginObject(); + WriteType(L"ArrayMapType", node); + PrintFields(static_cast(node)); + PrintFields(static_cast(node)); + EndObject(); + } + + void AstVisitor::Visit(GuiRpMapType* node) + { + if (!node) + { + WriteNull(); + return; + } + BeginObject(); + WriteType(L"MapType", node); + PrintFields(static_cast(node)); + PrintFields(static_cast(node)); + EndObject(); + } + void AstVisitor::Visit(GuiRpEnumDecl* node) { if (!node) @@ -11689,6 +12040,20 @@ namespace vl::presentation::remoteprotocol::json_visitor EndObject(); } + void AstVisitor::Visit(GuiRpUnionDecl* node) + { + if (!node) + { + WriteNull(); + return; + } + BeginObject(); + WriteType(L"UnionDecl", node); + PrintFields(static_cast(node)); + PrintFields(static_cast(node)); + EndObject(); + } + void AstVisitor::Visit(GuiRpStructDecl* node) { if (!node) @@ -11782,6 +12147,19 @@ namespace vl::presentation::remoteprotocol::json_visitor EndObject(); } + void AstVisitor::Print(GuiRpUnionMember* node) + { + if (!node) + { + WriteNull(); + return; + } + BeginObject(); + WriteType(L"UnionMember", node); + PrintFields(static_cast(node)); + EndObject(); + } + void AstVisitor::Print(GuiRpStructMember* node) { if (!node) @@ -11864,35 +12242,45 @@ namespace vl::presentation::remoteprotocol { void GuiRemoteProtocolParserData(vl::stream::IStream& outputStream) { - static const vl::vint dataLength = 5825; // 78019 bytes before compressing + static const vl::vint dataLength = 8193; // 113198 bytes before compressing static const vl::vint dataBlock = 256; - static const vl::vint dataRemain = 193; - static const vl::vint dataSolidRows = 22; - static const vl::vint dataRows = 23; + static const vl::vint dataRemain = 1; + static const vl::vint dataSolidRows = 32; + static const vl::vint dataRows = 33; static const char* compressed[] = { - "\xC3\x30\x01\x00\xB9\x16\x00\x00\x1D\x00\x01\x82\x80\x0F\x03\x82\x81\x82\x06\x89\x82\x90\x0A\x83\x0A\x85\x0D\x0A\x9F\x0A\x86\x1A\x85\x16\x84\x1A\x0A\xBA\x0A\x80\x2A\x80\x26\x84\x27\x0A\xD5\x0A\x9B\x2A\x87\x2E\x85\x7E\x0B\x09\xBF\x6B\x9C\x93\x96\x84\x00\x2D\xAD\xAF\x91\x9C\x93\x98\x9B\x7F\x36\xB4\xB9\x91\x9B\x9A\x9A\x85\x9B\x38\xBF\xB7\x8F\x9F\x91\x02\x84\xA3\x09\xC8\x86\x82\x07\xA2\x87\x01\xA6\x09\x84\x10\xA6\x85\x03\xAB\x80\x03\x56\x82\x87\x19\xA1\x80\xA1\x9F\x9A\x0A\x88\x1C\xB0\x93\xA2\xA2\x9C\xB3\x3C\xE8\xBE\x8A\x95\xB4\xB7\xB2\xB7\x69\xF0\xAB\xA6\x8E\xAA\xB4\xB0\xB9\x77\xF4\xAD\xBA\xBF\xB4\xBD\xB8\xBF\x73\x83\xB5\xB8\xBE\x96\xB9\xC2\xC2\x41\x88\xDF\xA7\xC0\xC1\xBE\xC1\xBD\x8F\xFD\x91\xDF\xB3\xC9\xC2\x81\xC1\x8D\x8C\xD5\xCE\xC7\xC8\xC9\xCE\xC9\x9F\x94\xE1\xD6\xCD\xAE\xCD\xD2\xD0\xA7\xA2\xE9\xC4\xD4\xB0\xD5\xD6\xD5\xAF\xAC\xD8\xDB\xCA\xCA\x81\x05\xB1\x0A\x0A\x8C\xAA\xC6\xC1\xC5\xCC\xDF\xB4\xC0\xE3\xDC\xCB\xD4\xE1\xD8\xE3\xB3\xC3\xF5\xC5\xEB\xE7\xE1\xE7\xE4\xCC\xC2\xD1\xEB\xC2\xEE\xE5\xEA\xE8\xD6\xD4\xDA\xFD", - "\xDB\xEC\xDE\xEF\xDF\xDD\xE0\xDC\xE3\xF9\x84\x07\xB1\x06\xBA\xE4\xE2\xFF\xE1\xE1\xF1\xF6\xF5\xEF\xEC\xCA\xF7\xE6\xD1\xEC\xF9\xF9\xEE\xF8\xF7\xF3\xEB\xFE\xFA\xF8\xFE\xFF\x7E\x7B\x7B\x80\xF1\x44\x8A\x7D\x42\x08\x46\x4A\x53\x40\x0C\x49\x4B\x6E\x81\x00\x90\x82\x81\x81\x14\x87\x82\x84\x76\x18\xB5\x79\x86\x6B\x1B\xB0\x6D\x86\x6C\x1A\xA1\x8C\x86\x88\x1E\xA4\x80\x8B\x88\x28\xA5\x89\x88\x6B\x12\x23\x5E\x42\x83\xFD\x5F\x88\x72\x89\x33\xAB\x85\x8E\x8A\x38\xA7\x89\x8F\x8D\x3A\xBD\x8C\x8F\x8F\xCF\x74\x81\x92\x8D\x43\xBB\x85\x92\x8F\x47\x80\x94\x7C\x91\xD5\x55\x03\x5A\x05\xE9\x41\x82\x8D\x92\x54\x8B\x96\x92\x95\x48\x98\x9A\x91\x7E\x11\x95\x8D\x96\x85\x5E\x93\x80\x9B\x98\x5F\xA5\x92\x9A\x99\x53\x9A\x95\x94\x97\x00\x18\x03\x59\x06\x51\x97\x82\x92\x9A\x74\xAC\x99\x9A\x9D\x73\xB8\x9C\x92\x9E\x57\xBC\x99\x96\x9F\x5B\xB1\x89\x9E\xA0\x7B\x8F\x43\x58\x07\x71\xA1\x97\x9C\xA1\x7D\x8C\xAF\x9E\xA3\x81\x92\x93\xA2\xA4\x85\x94\xAD\xA2\xA5\x8F\x98\xA1\xA6\x9C\xAE\x5E\x03\x5A\x44\x30\x9A\xAB\x98\xA4\xA3\xA2\xA5\x9C\xA9\xA7\xA6\xA0\xA1\xA9", - "\x9C\x97\xAD\xA9\xA6\xAF\x9B\xAA\xA3\xA4\x06\x61\x03\x5A\x08\x89\xA4\x97\x9B\xAE\x8B\xAA\xA8\xAB\xAA\xA9\xB1\xAC\xAB\xAC\x95\x82\xB1\xB0\xB1\xAE\x88\xB0\xAE\xB2\xC6\x64\x03\x59\x09\xB9\xA8\x94\xAC\xB3\xC3\xBA\xAD\xAE\xB1\xC0\x99\xBF\xAF\xB6\xBE\x9D\xB8\xB4\xB7\xDF\x89\x47\x0B\x58\x28\x11\xBC\xAF\xB4\xD6\xA8\xB2\xB5\xB1\xD4\x87\xB9\xB8\xBB\xEF\x89\xB1\xBF\xB2\xF3\xB2\xA5\xBD\xB5\xEB\xB2\xB9\xBC\xBD\xFB\xB6\xBD\xBC\xBE\xE7\xB0\xBF\xBE\xBB\x03\xDA\xBE\xB5\x98\x2A\x23\x57\xB5\xBB\x06\xE1\xBE\xC0\xC3\xE0\x90\xC7\xC3\xBD\x04\xC1\xCA\xBE\xC5\xFC\x98\xCE\xBE\xC6\x00\xCB\xCA\xAF\x0A\x0A\xEA\xBC\xC5\xC5\x1E\xC5\xC1\xC4\xC5\x0D\xD2\xCF\xC0\xCA\x27\xC1\x4C\x09\xC8\x02\xE3\xC9\xC8\xCB\x13\xE6\xC5\xCE\xCC\x2D\xF8\xC7\xCD\xC9\xBB\x96\x49\x51\xCE\x3C\xC1\xD2\xCA\xD0\x31\xC4\xD7\xC6\xD1\x19\xC8\xDB\xC6\xD2\x1D\xC3\xDE\xD1\xD1\x4F\xC7\xD1\xD5\xD2\x22\xEE\x00\xCE\xD4\x50\xD9\xD8\xD7\xD6\x54\xDA\xDD\xD4\xD7\x4B\xD3\xD1\xDA\xD7\x63\xE0\xDD\xD0\xD9\x67\xE6\xD4\xCA\xD8\x69\xDF\xDE\xD9\xD9\x19\xEF\x07\xD7\xDB\x6D\xF0\xD6\xDD\xDD\x78", - "\xEB\xD8\xDA\xDE\x6A\xF3\xC6\xCF\xCA\x7F\xEA\xC2\xE0\xCD\x80\xFA\xC5\xE0\xD3\x7C\xF4\xD9\xE3\xDD\x8B\xF9\xDC\x98\x0C\x73\xCC\xEE\xDE\xE1\x83\xC1\xE4\xE1\xE5\x94\xD7\xEA\xE6\xE5\x9C\xD9\xED\xE4\xE2\x93\xD8\x71\x0F\x58\x32\x11\xEE\xE0\xD0\x6C\xCD\xEA\xE9\xE8\xA9\xEC\xEB\xDC\x9B\x33\x26\xEB\xE8\xEA\xAF\xF4\xED\xDE\xED\x8A\xEE\xE7\xEF\xCE\xAD\xF8\xE2\xE6\xEF\xCD\x58\x4F\xCC\xEF\xB5\xF7\xC5\x0E\xEC\xBA\xF9\xE0\xF3\xEC\xC4\xFB\xE7\xE1\xEF\xCD\xCA\xF1\xF7\xEF\xD3\xE7\xE5\xF4\xF3\xCF\xC5\xF9\xF6\xF3\x98\xFC\xC6\x0C\xF2\xCB\xC9\xF4\xF7\xF6\xD2\xE4\xF3\xF9\xF7\xD0\xC6\x47\x0C\xF8\xD7\xE2\xF6\xF6\xF9\xEF\xE8\xFA\xF6\xFC\xDC\xDB\xEE\xE7\xFD\xA0\xE1\xFA\xFD\xFB\x0A\x78\x0C\xF8\xFC\xD8\x74\x7D\xF9\x02\x87\x7C\xFB\x79\x7C\x7F\x08\x80\x82\xFB\x01\x86\x81\xF4\x44\x81\x7E\x0D\x93\x7D\x04\xF5\x7F\x73\xFA\x39\x07\x7F\x0F\x95\x62\x46\x43\x7A\x81\xFD\x5D\x81\x81\x19\x8B\x82\x08\x9E\x81\x84\x12\x93\x83\x80\x27\x85\x81\x05\x92\x8B\x84\x0A\xB8\x7E\x81\x29\x90\x81\x0B\xA8\x83\x86\x15\xAF\x84\x85\xF7\x7B\x04\x06\xB1\x8C\x81\x1A\xB2\x87", - "\x86\x2E\x87\x83\x07\xC3\x85\x85\x9B\x7C\x03\x87\x01\x3D\x04\x12\xC0\x84\x86\x26\xB6\x82\x88\x45\x84\x88\x0F\xA3\x87\x66\x1F\x0B\x8F\x07\x4B\x90\x8B\x14\xB9\x6C\x22\x0E\x91\x8F\x8B\x5B\x80\x85\x18\xD2\x8E\x87\x1E\x8E\x8F\x87\x5A\x85\x8C\x15\xE4\x87\x8C\x33\xA9\x8F\x7E\x41\x19\x88\x0C\xEA\x86\x85\xCE\x42\x0A\x8E\x38\x8F\x8E\x1E\xF3\x8D\x8D\x35\xA0\x8C\x8E\x62\x80\x90\x1B\xFB\x89\x8E\x3E\x84\x91\x88\x86\x89\x91\x21\x8B\x98\x90\x46\x8D\x8F\x90\x8F\x82\x67\x10\x78\x8D\x91\x4A\x91\x96\x91\x4F\x8A\x90\x6C\x44\x03\x2D\x22\x23\x2E\x08\x63\x27\x0B\x58\x1E\x2E\x8A\x81\x09\x0B\x2C\x4A\x03\x2F\x12\x14\x9C\x34\x26\x2C\x91\x93\x98\x88\x8D\x7D\x4D\x0F\x94\x59\xB1\x96\x8D\x9A\x97\x92\x25\xB0\x9B\x96\x5B\xBD\x90\x97\xB7\x9E\x8F\x18\xFF\x8D\x8F\x3A\x85\x99\x40\x20\x25\x96\x20\xC4\x90\x92\x5E\xBA\x97\x99\xCE\x91\x9A\x2F\x99\x6F\x09\x5A\x80\x9F\x97\x2F\x30\x0A\x35\xC2\x9B\x99\x61\x9E\x9D\x9B\xE0\x87\x9B\x20\xB9\x92\x9B\x6B\x90\x9B\x9A\xE5\x9C\x9A\x38\xCC\x94\x9C\x74\xAE\x9E\x9C\xE9\x86\x9B\x1B\xD1\x0B\x9A\x79\xAD\x98\x9E\x00\x72", - "\x09\x3D\x81\x9B\x9D\x6F\xBD\x99\x9C\xD8\x33\x0B\x3E\xE3\x91\x99\x9C\x54\x0B\xA0\xEC\x85\xA0\x3F\xCD\x9F\x86\x91\x0A\x9F\x9F\x10\xAF\x8E\x15\x08\xAE\x9E\x86\xB8\x9F\xA2\xEA\x96\xA1\x46\xF7\x9B\xA2\x85\x84\xA0\x9B\xF6\x9E\xA3\x40\x57\x04\xA2\x80\x9C\xA1\xA4\x20\xA9\x20\x16\x25\xA1\xA3\x93\x8B\xA6\xA5\x1F\xA7\x9C\x46\xA8\xA2\xA7\x8E\xA9\xA1\xA6\xF1\x8F\xA6\x48\x95\xA0\xA6\x62\x99\x0B\x2C\x5A\x03\x2C\x49\x0F\xAC\x0B\xB1\x1D\x0B\x2C\x5E\x03\x2E\x49\x0F\xA0\x0C\x96\xA1\x0C\xA5\x1A\xB4\xA7\xC6\x62\x00\xAB\x9E\xBC\xA3\xA7\x26\xB8\xA9\x4B\xDA\xA1\xAA\x9D\xB7\xA1\xA1\x5F\xB7\xA9\x58\xD9\xA7\x63\x31\x15\xAC\xAB\x56\xA4\xAD\x4D\xD2\xAF\x9C\x9B\x99\x64\x0C\x67\xA3\xAF\x56\x97\x65\x0D\xB8\xAB\xAE\xAB\x77\xB8\xA5\x5B\xEC\xA3\xA6\xBC\xB9\xA2\xAF\x7D\xA0\xB2\x5B\xFF\xA0\xAD\xBC\x85\xB6\x38\x66\x03\x2F\x19\x63\x28\x0D\xB1\x29\x0B\x2C\x6A\x03\x2F\x1A\x63\x2C\x0D\xB1\x2D\x0C\xA5\x6E\x16\xAC\x61\xE2\xA9\x63\x37\x1A\xB3\xAF\x7E\xA0\xB6\x60\xFC\xA3\xB0\xD1\x87\xB6\xB4\x9C\xBB\xB2\x5A\xAA\xB3\xAE\xC3\xBA\x50\x0E\x9F\xA1\xB3\x69\xB2", - "\xB9\xB4\xD4\xAB\xB6\xB6\xF7\x71\x0D\x6C\xA5\xB6\x8C\x39\x3B\xB4\xB4\xC0\xA1\xB4\x6D\xB7\xB3\xB9\xD6\xAC\xB5\xAB\xA3\xA2\xB8\x6F\xCB\xB1\xB9\xE4\x8E\xBB\xB6\xCC\xBC\x9F\x1C\x3F\xBA\xB9\xE6\x90\xB9\x67\x74\x03\x2D\x1D\x54\xBF\xB9\xDA\xA6\x8E\x0E\xDC\xB7\xB9\x75\xE3\xB2\x43\x3B\x21\xBE\xBB\xD1\xA5\x70\x1E\x67\xB4\xB9\xF4\xA2\xBD\xBB\xED\xB6\xBA\x3F\xF9\x0C\xBC\xE3\xBF\x82\x0F\xF5\xA8\xBB\x7B\xFB\xB8\xBC\xF9\xB1\xBC\xBC\xFC\xBF\xBC\x7C\xF6\xB5\xB9\x3D\x39\xB9\xAD\x04\xCE\xBE\xAE\x7C\x07\xC0\xB4\x8E\xC2\xAE\xFA\xBD\xBC\x80\x92\xC3\xC1\x08\xC2\xC1\xC0\x09\xDE\xBD\x86\x93\xC6\x4D\x3E\x23\x2E\x0F\x63\x3F\x0F\x58\x00\x13\x2D\x40\x23\x2A\x10\x63\x23\x13\x58\x04\x1C\xA5\x42\x0D\xC0\xC2\x08\xC6\x13\x8B\xAE\xB7\xC2\x0A\xD8\xC6\xC2\x1B\xD5\xC0\x82\xB8\xCC\xC7\x1D\xFE\xC7\xC1\x19\x67\x13\x8C\xC7\xBF\xC6\x18\xC0\xCC\xC8\x47\xC0\x60\x22\x43\xC8\xB7\x1E\xEE\x31\x11\x4C\xC5\xBA\x93\xC6\xC4\xCA\x1A\xF9\xC7\xC6\x45\xD6\xCB\x94\xDA\xC9\xCA\x24\xD5\xCE\xCB\x5C\xC9\xC9\x75\x0A\x11\xCA\x05\xF5\xC7\xCC\xBB\x4B\x11\x99\x9A\xCB\xCB\x8D", - "\x4C\x13\xCD\x1C\xD7\xCA\x8D\xF3\xC8\xCD\x36\xC0\x65\x11\x70\xDA\xC6\x6B\x0E\x19\xCE\x2C\xE2\xCE\xCC\x72\xD5\xCD\x97\xCD\xC3\xD0\x29\xC5\xD0\xD0\x8F\x1D\xCC\x9D\x81\xDB\x56\x48\x23\x29\x12\x63\x32\x10\x4B\x93\x1A\xD0\x41\xFF\xCC\xCD\x87\xD8\xD3\xA5\xF1\xC6\xCE\x43\xDB\xD2\xCF\xB0\x34\x11\xA5\x8C\xDD\xD2\x40\xE5\xD2\xD3\x72\xB5\x13\xA8\xA7\xDC\xD3\x4C\xED\xD7\xD3\xC4\x96\x13\xAA\xAE\xD0\xD5\x30\xDF\xCC\xD0\xB0\xC2\x23\x25\x33\xD9\xD6\x4B\xF7\xD6\xD3\xBF\xC6\xD4\x1F\x98\x13\x2D\x4C\x23\x2A\x13\x2C\xBB\x10\xAF\xC1\xDA\xC2\x4E\x0B\xDE\xD6\xD0\xC0\xCE\xB4\xB8\xDC\xD9\x57\xD5\xDB\xC0\x9D\x03\x2E\x27\x63\x2F\x12\x96\xA0\x17\xD9\xD3\xC0\xD8\x6B\x21\x10\xDC\xDC\xA2\x15\xDC\xE2\xC1\xDE\xB0\xBD\xD4\xD4\x5A\xD8\x73\x14\x63\x24\x17\x58\x25\x1C\xA4\x53\x28\xDB\xDD\x72\xA7\x17\xBD\xA8\xD1\xDA\x6A\xFD\xD9\xDD\xFE\xCA\xDC\xBF\xC6\x38\x14\x96\xA9\x13\x2C\xAA\x03\x2F\x2A\x2C\xAC\x15\x7D\xD6\xDE\xCA\xAD\x0E\xE0\x1B\xAE\x1C\xA5\x57\x23\x28\x16\x63\x31\x14\x4B\xB2\x12\xE2\x3F\xF2\xAB\x16\x1D\xFE\x9E\x1F\x0B\x41\x21\x07\x43\x21\x25", - "\x88\x26\xE6\x40\x28\xEF\x36\x95\xC1\x24\xE5\xC1\x2E\xE4\x00\x30\xE3\x3E\x99\xF4\xE1\x3A\x36\xFD\x35\xCE\xA9\xEA\x21\x9B\xD6\x3A\xE6\xE6\x26\x54\x50\x37\x38\x41\xDE\x24\xE4\x28\xD6\x24\xEA\x41\x0E\x0D\x37\xAA\x08\x30\x28\x47\xE4\x2B\xD0\x8A\x2C\xE8\xC4\x0E\xEF\x37\x40\x3B\x2B\xD3\xB7\x22\xE7\xDC\x08\x32\x2C\x5B\xF4\x26\xD2\x83\x28\x3C\xC4\x11\xEC\x3A\x63\xE2\x21\xD5\xBF\x37\xEB\xE0\x19\xED\x37\x40\x32\xE4\x75\x60\xE8\xEB\x9B\x29\xE8\xE9\x50\xEA\x21\xDB\xF3\x37\xEE\x00\x2B\xE9\x38\x7B\xF1\x39\xDE\x89\x21\xF1\xA4\xD4\xED\xE9\x70\xF7\x26\xD6\xF5\xE4\x27\xAE\xFD\x34\xEE\x6E\xF6\xEE\x42\x65\xEF\x37\xA8\xC5\xF3\xEA\x09\x3F\xEF\x7C\x17\xF0\x28\xC5\xC9\xF5\xF1\x48\xFF\x34\xE4\xF3\x38\xF3\xD0\xD1\x39\xEA\x8B\xE1\x39\xDF\x9A\xF1\x3A\xCE\xDD\xF1\x26\xA8\xFD\x37\xEA\x88\xF1\xED\x98\x29\xF4\xF4\x5C\xEA\x22\xD7\xA2\xFF\xF3\x98\x3D\xEC\xF2\xC1\x31\xF4\x62\x33\xF6\xEB\xDE\xED\x27\xF6\x82\xF9\xF6\xE9\xD1\x33\xF5\xE4\xE2\xEB\xF9\xA7\xEE\x2A\xEC\x87\xF5\xF9\xDA\xED\x21\xEA\x4F\x23\xF8\xF5\xEC\xE6\xF8\x96\x08\xFE\x3A\x71\xFA\xF7", - "\xE3\xDD\xFB\x25\xDF\xC6\xEA\xFA\xDA\xF9\xF0\xED\x8C\xF6\xF6\xF2\xFF\x1A\xEE\xE3\xF6\xF8\x4B\x7D\xE4\x3B\xA8\xF2\xE5\xF4\x03\x2C\xF6\x75\x2E\xFF\xF4\x96\x36\xFB\xFA\xEA\x75\x7D\xEC\x77\x7C\xEE\x7E\x78\x5F\x7E\x7E\xE6\x76\x76\xE6\x28\x7F\x6A\x7B\x7E\x91\x74\x13\xDF\x7D\x7F\x31\x10\x7F\x07\x82\x7F\xE5\x70\x7D\xD6\x11\x75\x51\x7C\x80\x01\x1A\x7F\x40\x1C\x7F\x12\x8A\x81\x00\x8B\x74\x0E\x88\x7B\x10\x85\x80\xE2\x75\x81\x03\x83\x7F\x93\x77\x7E\x0F\x5C\x81\x7E\x75\x82\xCE\x7D\x7E\x16\x8F\x7E\x18\x80\x14\xCD\x70\x7E\x92\x70\x7D\x83\x76\x10\x58\x19\x7E\x24\x82\x80\x0F\x80\x7B\x0A\x1F\x83\xBF\x14\x7C\xDC\x75\x83\x11\x82\x81\x2C\x16\x80\xBC\x75\x83\x09\x85\x79\x45\x83\x82\xF9\x72\x83\x3A\x87\x82\x35\x84\x81\x4F\x8B\x82\x17\x8C\x83\x37\x11\x75\x52\x10\x84\x55\x82\x84\x26\x84\x84\x51\x14\x85\x0D\x84\x86\x33\x84\x80\x59\x89\x82\x5B\x83\x84\x2D\x11\x85\xC1\x7A\x10\x61\x87\x84\xDB\x70\x78\xEE\x7B\x84\x4C\x86\x83\x5E\x84\x13\x39\x8B\x87\x5D\x8B\x7C\x1F\x8E\x7E\x20\x8D\x7F\x7A\x8C\x84\x4E\x81\x1C\x7F\x80\x88\x72\x8B\x79\x79\x88", - "\x82\x7D\x81\x13\x8B\x8B\x87\xF4\x76\x85\x80\x8F\x0F\x85\x8F\x7A\x87\x82\x81\x89\x83\x1F\x93\x8C\x84\x8D\x8D\x7A\x8F\x8D\x86\x91\x8D\x12\x9F\x82\x81\x95\x8A\x86\x57\x81\x13\x99\x8D\x79\x9B\x8D\x7F\x9D\x8C\x7C\x08\x8D\x82\xAA\x87\x89\xAF\x8F\x7A\x5A\x8A\x88\xB3\x85\x8A\x4A\x20\x83\x1B\x8A\x7C\x0A\x28\x2A\x30\x87\x7F\x73\x2E\x8B\x96\x80\x88\x32\x75\x87\xED\x20\x83\x46\x88\x87\xA4\x86\x10\xD9\x76\x2C\x30\x8A\x8C\x35\x74\x87\xC2\x8B\x83\x3E\x8A\x73\xD6\x82\x74\xD8\x87\x15\xC7\x8B\x87\x32\x79\x20\xCB\x8D\x8D\x02\x1D\x22\x3C\x79\x10\x3E\x71\x7E\xE8\x8A\x8D\xEB\x87\x8E\x06\x19\x8E\xC0\x87\x72\xEC\x8F\x8E\xF3\x82\x8F\xEE\x86\x8F\x2D\x7A\x10\x41\x72\x8D\xE4\x81\x10\xE2\x8E\x88\xCF\x83\x86\xFC\x8F\x7C\x67\x87\x8F\x07\x15\x8F\x07\x95\x8B\xC8\x81\x16\x08\x9F\x72\x0D\x93\x73\x0F\x90\x8F\xA0\x7D\x8E\xF9\x84\x91\x31\x7D\x73\x11\x99\x91\x06\x91\x10\xFB\x83\x8E\x04\x96\x10\xFF\x82\x8A\x01\x96\x1B\x1A\x95\x91\xF4\x8B\x91\x10\x98\x92\x12\x93\x81\x18\x9A\x92\x25\x97\x91\x16\x95\x8D\xE5\x17\x8D\x1F\x93\x10\x21\x9B\x7F\x90\x86\x10", - "\xB7\x84\x27\xD3\x8F\x90\xA7\x8D\x84\x0A\x1D\x77\xEA\x86\x10\x42\x97\x13\xAD\x83\x94\xDE\x8E\x92\x4A\x96\x92\xF8\x80\x93\x27\x9C\x94\x2B\x7F\x92\x32\x9F\x94\x4E\x9D\x94\x53\x93\x10\x1D\x94\x31\x30\x87\x93\x83\x83\x92\x01\x1D\x8A\xD4\x1D\x93\x28\x9D\x8C\x00\x9C\x85\xFF\x01\x8D\x70\x80\x94\x09\x18\x96\xF3\x1C\x96\x6B\x8A\x96\x41\x8F\x1B\x6E\x9B\x8A\x2D\x12\x73\x3B\x93\x97\x97\x82\x73\xAD\x84\x8D\x6F\x9B\x12\x47\x97\x13\x7C\x94\x97\x2C\x1F\x97\x34\x11\x98\x97\x84\x98\x31\x16\x98\x80\x88\x98\x2D\x18\x97\x80\x8E\x98\xE0\x88\x7E\x72\x9E\x7E\x90\x98\x88\x77\x8D\x96\x94\x99\x93\x03\x17\x97\x99\x9E\x95\x00\x0D\x8A\x95\x9C\x89\xB2\x31\x9A\xB0\x82\x99\xC1\x14\x9A\xB8\x87\x99\xD1\x18\x9A\x9D\x76\x97\xBD\x1C\x9A\x48\x92\x10\xAD\x82\x73\xBF\x84\x13\x8C\x90\x97\x64\x7F\x9A\x9D\x96\x96\x32\x7C\x9A\x32\x70\x7C\x98\x95\x83\xB0\x91\x8F\x69\x80\x95\x01\x10\x9C\xAB\x9B\x9B\x69\x9B\x12\xAE\x98\x92\xC8\x96\x1D\xC3\x94\x13\xD1\x9C\x92\x84\x7F\x90\xCF\x90\x14\xD3\x95\x97\xB2\x37\x9B\x2B\x19\x9D\x2C\x1E\x9D\xCC\x96\x9A\xC1\x96\x96\xE0", - "\x9C\x87\x71\x97\x9A\xCA\x95\x86\xDA\x99\x10\x9C\x92\x9C\x9A\x92\x9B\xBA\x9E\x99\xB5\x9C\x8A\xE9\x9D\x97\x67\x9F\x9E\x01\x1C\x9A\xE5\x95\x9E\x32\x7E\x81\x37\x1B\x9F\xF8\x90\x00\xED\x94\x9E\x01\xA0\x9A\x01\xA3\x9F\x71\x8A\x77\x68\x8F\x95\x0B\xA0\x00\x2F\x26\x87\x09\x11\x01\x0D\xA2\xA1\x62\x81\x95\x15\xAC\x91\x0D\xA5\x94\x35\x92\x10\xBB\x7A\x7A\x6E\x8E\xA1\x09\x1F\x93\x81\x8B\x99\xBD\x1A\x98\x94\x82\x9E\xD1\x16\xA2\xA0\x88\xA2\x86\x79\x10\x0D\x20\xA1\x06\x1F\xA2\x20\xA1\xA3\xBD\x17\x59\xD0\x7F\x7F\x6B\x9C\xA2\x73\x9B\xA3\x3A\xAD\xA3\x05\x94\x15\x53\x89\x10\x64\x91\x10\x43\xA0\x00\x45\xA7\xA4\x41\xA9\x8D\x42\xAA\x10\xDF\x7D\xA4\x4C\xAF\xA4\xEC\x90\xA5\x3A\x92\xA5\x03\x19\x83\x7D\x7D\xA1\x16\xA4\x95\x59\xA6\x95\x0E\x91\x93\x5D\xAA\xA5\x5F\xA8\x95\xB4\x87\x9E\x09\x94\xA3\x11\xA3\xA6\x03\x14\xA1\x64\xA1\x10\x6A\xA6\x93\x0A\x1D\xA6\x0B\x1A\x10\xE6\x86\x10\x0F\xA9\x9B\x09\x15\xA7\xC5\x93\x10\x78\xAE\x8F\x0D\x1A\x10\x32\xA2\x10\x14\x0A\x10\x4E\x27\xA6\x09\x1F\x9C\x83\xA6\x10\x70\xAD\x81\x82\xAF\xA6\x0A\x17\x93\x87\xA9", - "\xA6\x7E\xAB\xA8\x09\x13\xA7\x03\x10\x25\x84\xA6\x10\xCF\x96\xA9\x88\xAA\x9A\x00\x0A\xA9\x90\xA5\x74\x09\x1E\xA9\x02\x19\xA8\x00\x0F\xA7\x01\x12\xAA\x01\x14\xA9\x02\x17\x01\x8C\xA5\xA8\x0A\x1C\xAA\x97\xA2\x90\x03\x10\xAB\x9B\xA0\xAA\x06\x14\xAB\x9F\xA6\xA6\xB7\xA2\xA7\x0A\x1E\x26\x0F\x5A\x01\x18\x88\xA0\xC6\x13\x97\x23\x08\x81\x2F\x1B\x06\x47\x78\x7D\x0A\x15\xAC\xC6\xA9\x10\x6C\x09\xAC\x18\x80\x32\xCD\xA6\x10\x6D\x00\xAD\xD5\x99\x10\xA3\x33\xAD\x03\x1E\x06\xD6\xA0\xA4\xD8\xAA\xAD\x03\x1F\x06\xDD\xA6\x7A\xFE\x30\xAE\x01\x10\x07\xE3\xA1\x7A\x56\x46\xAE\x00\x01\x07\xE9\xA1\x10\xDF\x7C\x49\xEC\xA2\x07\xEF\xA0\x00\x39\x8E\x49\xEC\xA3\x07\xF5\xA7\xAF\xEC\xA0\x00\x74\x05\xAF\x2F\x1E\x4A\xEC\xA5\x07\xF5\xA8\xA5\x01\x1A\x4F\xEC\xA6\x07\xF5\xA1\x98\x24\x50\x7D\xAC\x9F\x12\x45\xA1\x54\x0E\xBD\x1F\x7D\x7F\x53\x13\xB1\x20\x3E\x7B\x52\x17\xB2\x21\x59\x91\x10\x49\x5B\xB1\x03\x17\x07\xF5\xA2\x73\x47\x5C\xAE\x78\x05\xAF\x1D\xB0\x00\x1F\xBB\x7C\x73\x99\x07\x23\xBA\x10\x25\xB6\xAE\x7A\x05\xAF\xCF\x9F\x54\xEC\xAB\x07\x34\xBA\x10", - "\x54\x5C\xAE\x7C\x09\xB3\x09\x1B\xB3\xE6\xAD\x07\xF5\xA4\x0B\x18\x84\x8C\xAE\x16\xAC\xC2\xA0\x30\x2F\x1B\x93\x48\xBC\x52\x10\xBD\x1F\x2F\x14\x9B\x39\x3F\x12\x60\x98\x81\x73\x99\xB4\x15\x3F\x12\x1A\xA0\x1B\x2F\x11\x98\x58\xBC\x26\x2F\x1F\xB0\x18\x85\x78\x5F\xB0\xB5\x0C\x91\x20\x4F\xBF\x82\x22\x3D\xB5\x66\xB1\xA5\x6A\xB1\x33\x2F\x16\xB0\xBB\x2F\x12\x39\x81\x75\x7D\x76\xB4\xB0\x12\xB5\x68\xBD\x92\xD0\x89\x33\xFD\x9D\xB6\x6B\xA6\xA4\x0A\x11\xA8\x6F\xB9\xB7\x8D\xA0\xB8\x03\x1F\xA8\x02\x15\xA4\x10\x15\xB8\xAC\x17\xB5\x88\xB2\x10\x88\x29\xA3\x37\x33\x97\xFE\x97\xB4\x11\x19\xA4\x03\x10\x2D\x8E\xB3\xAC\x87\xBB\xB7\x09\x14\x11\x4B\xA9\x10\x2F\x3D\xB9\xCD\x1E\xB5\x91\xB1\x10\x3E\x3D\xB7\x37\x31\x98\x97\xBC\xB5\x0A\x10\x39\xA3\xB6\x10\xDF\x36\xBA\xD5\x11\x98\x5C\x95\x1F\x2F\x1B\x3E\xB3\xB3\x10\x4A\x46\xBB\x54\xBB\x44\x2F\x1B\xAE\xAC\xB5\x38\x85\x7F\xBA\xAC\x1F\x12\x71\x4D\xBB\x02\x12\x4A\xC0\xBA\xA0\xB6\xA1\x26\x2F\x14\x4A\x4A\xA6\x10\xC9\x41\x8C\x01\x25\xA4\x65\xB0\x7D\xD5\x44\xB9\x85\x35\xA4\xC8\xB6\x1C\x2F\x18\xB0\xD5", - "\xB3\x10\x1A\xB8\xBD\x12\x25\xA4\xB9\xB8\xB9\x09\x16\xB1\xE5\xB2\x10\x4B\x58\xBE\x61\x2F\x7D\xDB\xBB\x7C\x4D\x5E\xBD\x98\x3F\x7D\xE1\xBD\x1C\x2F\x16\x56\xCC\xB1\x10\x8F\x5F\xBC\x6E\xB0\x92\xA9\xB0\x00\x91\x5F\xBF\x00\x00\x5B\x02\xC6\x10\x75\xB5\xC0\xBA\x58\xBF\xF6\x39\x83\xFB\xB5\x1D\x2F\x19\x5D\x08\xC8\x5F\x0B\xC5\xA5\x9F\xB2\x21\x2F\x16\x60\x08\xC6\x62\x19\xC4\x92\x21\xC8\x74\x28\x60\xC1\x9D\x38\x84\xD2\xBA\x10\x2E\x68\xC0\x6A\x63\xC2\x00\x0D\x77\xEB\xB0\xBB\x09\x1F\x66\x08\xC2\x69\x2E\xC2\xB7\xF5\xB6\x7A\x94\x6E\xC2\xD8\x12\xB7\x13\xC6\xAC\xA2\x6F\xA3\x03\x14\x6C\x37\xCB\xC1\x29\xC9\x10\xC6\x62\xC4\x02\x19\x6D\x2E\xCE\x73\x39\xC1\x7A\xDB\x6C\xC3\xF5\x1E\x73\x3F\xC8\x81\xDD\x6A\xC4\x01\x10\x6F\x4D\xC6\xC4\xBA\x2F\x12\xF2\x68\xC5\x00\x05\x70\x2E\xC9\xB2\x4F\xC8\x74\x07\x72\xC5\xAE\x19\xB2\x55\xC0\x7D\x09\x70\xC6\x14\x73\xC6\x5C\xC6\x26\x2F\x16\x71\x60\xC0\x72\x2E\xCF\x9C\x29\xB8\x1D\xEA\x4A\x7F\x2B\x99\xBC\xC6\x47\x93\xD7\x9A\xBB\xC6\x46\xAA\x00\x0A\xAA\x72\xCD\x1F\x44\xB1\x2A\x12\x26\xC8\x00\x04\xAA\x7A\xC6", - "\x4C\x7B\xA0\x00\x8A\xB7\xC8\x09\x16\x0B\x2C\x53\xC9\x9D\xA5\xC0\xD8\x17\x0B\x0B\x85\x1F\xA8\xA0\x00\x70\x20\xBA\x6C\x4F\xC9\xB8\xAD\xC5\xC6\x45\xCA\xA9\xAA\xC9\xF5\x19\x0B\xE6\x25\x14\xBD\xAA\x10\xA1\xCC\xC1\xC6\x41\xCB\x03\x14\xB8\xB2\xC9\x10\xBB\x0C\x52\xC0\xA9\x10\xBE\xA7\xCB\x6C\x4D\xB8\x06\x1E\x29\xA2\xC3\x10\xBC\x03\x16\xBD\x0D\xC9\xAE\x10\x10\x09\x13\xB9\xBE\xC3\x10\xBF\x0C\x52\xC2\xC6\x10\xCA\xCD\xCC\xFE\x40\x2A\xB5\x25\xC0\xC0\x0C\x52\xB6\x29\x10\x9C\xB4\xCD\x66\x21\x0C\xC8\xC0\x1B\xB8\x29\x10\xD1\xC7\xC4\x06\x13\x0C\x63\x14\x0C\xE6\x22\x82\x09\x13\xCE\x06\x1E\x2C\xC3\xCE\x4F\xCC\xA1\xCC\x05\xC6\x0C\x63\x17\x0C\xE6\x2A\xB7\x06\x13\xCF\x03\x10\xCF\xDE\xC0\x51\xFE\xC3\x10\x20\x05\xC0\xC9\x0C\x52\xDD\xC3\x10\xEE\xC6\xCE\xC4\x42\xBA\x06\x15\x2E\xF1\xC1\x10\xCA\x0C\x52\x0E\xD6\x10\xA5\xBF\xCF\xD8\x1B\x0C\xE1\xCC\x1A\x29\x09\xD1\xE2\xBA\x10\xCD\x0B\x44\x90\xB9\x10\x1B\xD3\xC0\x0A\xD2\x10\xCE\x0B\x44\xA8\xB2\xD2\x9A\xB6\xCA\x09\x1F\x0C\x4B\x44\xB6\x0A\x13\xD2\xDE\xAF\xCF\xD0\x0B\x44\xDA\xB1\xD3\x41\x95\xC0", - "\xD1\x0B\x44\xF4\xB8\xD3\x26\xC3\xB7\x0A\x12\x0D\x4B\x4D\xC0\x2A\xD1\xA2\x05\xC3\x0D\x4B\x4D\x77\x51\x72\xD3\x03\x1A\xA2\x7E\xC9\x10\xD4\x0B\x44\x38\xCE\xD3\x06\x12\xB7\x8F\xC9\x10\xD5\x03\x16\xD6\x06\x2E\x4E\xCA\x10\x09\x32\x2E\x05\xC8\x0D\x2C\x52\xAD\x06\x1F\xD5\x16\xDC\x47\x15\xD3\x10\x4C\xDC\xD2\x6C\x4B\xBA\x03\x12\x37\x0F\xD0\x00\xD9\x0C\x52\x70\xD6\x10\xB1\x31\xD7\xD8\x1A\x0D\x1C\xDD\x1C\xB2\xBD\xD0\x05\xCC\x0D\x4B\x44\xC6\xB1\xBA\x10\xA5\x38\xD7\x7C\x49\xAD\x7E\xD1\xD7\xDD\x0B\x44\xCF\x91\x75\x88\xD3\x10\x85\xD7\xD6\x38\x41\xD9\x03\x16\x35\x71\xDE\x0D\x2C\x57\xD7\x06\x1D\xD7\x25\xD1\x4E\xC2\x36\x10\x17\x41\xD7\xDF\x0C\x52\xB5\xBB\x14\x05\xC0\x0E\x4B\x4A\x7F\x51\x75\xDA\x24\xA1\xD7\xE1\x0B\x44\x37\x9B\xDA\x2B\xD4\xC9\x06\x12\x0E\x4B\x44\xC8\xB2\xD7\xAD\xFF\xC3\x0E\x4B\x44\xAA\xB9\xD4\x94\x05\xC4\x0E\x4B\x4C\xC8\xBF\xD3\x10\x62\xB0\x7D\xE5\x0B\x44\x91\xC5\xDC\x02\x12\xA2\x14\xCA\x10\xE6\x0B\x44\xB6\xC3\x10\xCC\xD1\x10\x4E\xDD\xD1\x09\x17\x0E\x4B\x48\xC9\xD5\xD0\x00\x56\xD2\xC8\x09\x18\x0E\x63\x19\x0E\xE6", - "\x2F\xC9\x51\x7C\xBB\x06\x17\x3C\x71\xDB\x0E\x2C\x55\xAE\xEA\x3A\xCA\x38\x41\xDA\xB4\xB0\xDF\x2E\x4B\x41\x06\x18\x45\x71\xDC\x0E\x2C\x57\x44\x8A\xCD\xD9\x00\x0D\x0E\x4B\x48\xCA\x00\x01\x75\xFC\xD3\xA5\x71\xDE\x0E\x4B\x4D\xCB\xD4\xDA\x10\x05\xE9\x94\xFF\xCF\x0E\x4B\x44\xCB\x02\x14\xE0\xD0\xBF\xCF\xF0\x0B\x44\xBB\xC2\xBF\x02\x1D\xE0\x22\xCF\xCF\xF1\x0B\x44\xC0\xCB\xE0\x09\x1C\xE1\xF9\x95\xC0\xF2\x0B\x44\xCC\xC2\xE2\x06\x14\xE2\xF6\xA5\xC0\xF3\x0B\x44\xD3\xCA\xE2\x03\x1C\xE2\xD7\xDC\xBF\x0A\x14\x0F\x4B\x45\xCE\x13\xEC\xE0\x1F\xAC\xD6\x03\x15\x0F\x63\x16\x0F\xE6\x26\xCD\x32\xE2\x10\xBF\xB6\x10\x3A\x41\xD7\xF8\x0C\x52\xC4\xBE\xBB\xF4\xDD\x44\xF8\xDB\xE2\x4F\xE6\x43\x5D\x46\x10\x77\x41\xD7\xF9\x0C\x52\x57\xE6\x10\xCE\xB2\xD9\xB0\x1A\x0F\x7B\xD5\x1D\x93\x49\x10\xF2\xDE\xDF\xFC\x0B\x44\x03\xDF\x50\x63\xE7\xDF\x05\xCD\x0F\x4B\x4B\xCD\x1A\xE1\x10\x6B\xE3\x10\xA0\x46\xD8\x38\x42\xAF\x6C\xE1\xD7\xFE\x0B\x44\x09\xDB\xE3\x09\x18\xE7\x74\xE3\xE5\x3F\x48\xAF\x06\x15\xE7\x5E\xED\x44\x86\xE3\x10\xCB\xB6\xD1\x2C\x5D\xE5\x03\x13", - "\xE7\x3E\xEE\x4F\xD4\xB3\x10\xB4\x41\xD7\x03\xE8\xC6\xB0\x19\x4A\xFD\xD1\xE9\x01\x11\x00\xF5\xA8\x1D\xFC\xCE\xE7\x06\x1A\xE9\x06\xEF\xCF\x02\x0F\xE9\xF5\x11\xD0\xA2\xE3\x10\xA4\xEE\xE0\xFE\xD3\x00\xA8\xEE\x1A\x07\xDB\xEA\x02\x1D\xEA\xF0\x91\xD7\x04\x01\xEB\xB0\x1C\xD0\x45\xE1\x10\xB6\xE1\x10\x5B\xBF\xD4\x54\x1A\xEB\xAC\x13\x2E\x0F\x5F\xEB\x00\x07\xDC\xCB\x76\x00\xC4\xE6\x1C\x13\xDD\xEB\x00\x08\xEC\xCE\xD6\xAC\x07\x0D\xEC\xCD\x1B\xD6\x9D\xEA\x10\xC8\xE5\xE3\xCF\xD1\xA2\xD6\xE5\x1D\x66\xD0\xED\xC8\xEF\xDD\xEC\xB4\x94\x05\xB7\x74\x32\x74\xD6\xD0\xEB\x4A\x09\x17\x4A\x71\xDC\x00\xDF\xEC\x26\x02\xB6\x10\xEC\xE7\xE8\x36\x45\xE9\xA3\xE2\xE8\x66\x47\xBD\x03\x1A\x4D\x71\xDD\x00\xF1\xED\x1F\xFE\xE6\x10\x07\x56\xE7\xB0\x1E\x00\xE8\xED\x1F\xF4\x49\x10\xF8\xEE\xDF\x10\x01\xF0\xA4\xB3\x16\x0B\xF6\x10\x02\x56\xF0\x4D\x44\xBE\x03\x15\xF1\xF6\xEF\x43\x1A\xF3\x10\xDD\xBF\xCF\x11\x00\xF1\x12\x25\xF0\x06\x13\xF1\xFE\xDF\x46\x0E\x57\xCD\x71\xD2\x01\x09\xF1\x20\x6E\xD4\xEB\x01\x19\xF2\x6F\xD5\xC0\x14\x0D\xF2\x12\x26\xD9\x71\xE0\x00", - "\x32\xF2\x10\x5B\xEE\xDF\x16\x06\xF3\x61\x25\xD7\xD0\xEB\xF3\x01\x13\xF0\xFE\xD8\x01\x40\xFA\x2B\x9C\xD0\xF3\x00\x0D\xB0\x06\x13\x51\x71\xDA\x01\x49\xFD\x39\xE7\xB3\x10\x50\xFF\xCF\x1C\x03\xF5\xF7\x3E\xBE\x56\xF5\xC0\x1E\x0A\xF5\x3C\x32\xB1\x4F\xF5\xC0\x20\x00\xF6\x22\x33\x54\x2A\xFF\xCF\x22\x07\x74\xCA\xE3\x10\x8F\xD2\x10\x32\x78\xF6\x33\xF1\xD7\x25\x0C\xF6\xFD\x1A\xD9\x03\x11\xF7\x0A\x1D\xF3\x9C\xE0\x00\x28\x06\xF7\x01\x2A\xDE\xA6\xD9\x10\x72\xF2\x10\x46\xFD\xF7\x2B\x00\xF8\x12\x28\xDE\x79\xF3\x12\x92\xAF\xCF\x2E\x06\xF6\xAE\x15\xE6\x4C\xF1\xB3\x03\x10\xE7\xFE\xD0\x03\x92\xF0\x1B\xF6\xDD\xF8\x09\x16\xF9\x02\x12\xF4\x7D\xF2\x03\x9B\xFC\x1A\x2C\xE4\xB2\x7B\xF5\xC0\x34\x05\xFA\xC6\x1D\xE4\x70\xF0\xB3\x0A\x17\xF8\xB4\xD3\x10\x36\x0C\xFA\xCD\x15\xE5\x9E\xF6\x10\xA0\xF1\x10\x98\xC7\xD5\x06\x18\x03\x22\xF3\x10\x7C\xF9\xED\x09\x1B\xB2\x03\x15\x54\x71\xD9\x03\xC1\xFA\x2B\xF1\xB7\xF9\x05\xCA\x03\x47\x7C\xED\x2F\x10\xE9\x25\xE9\x10\xCD\xF1\xFA\x05\xCE\x03\xD1\xFD\x1F\x89\xE2\x10\x73\x97\xFD\x01\x13\xFC\x40\xD9\x10\x42", - "\x0B\xFD\x01\x2E\xEE\xC5\xB3\x10\xE0\xF0\x00\xB2\xF3\xFE\x85\xE6\xFE\x12\x23\xEF\xC6\xD5\x12\x8F\xFE\xDF\x4A\x0A\xF8\x61\x2F\xF1\xB9\xF3\x10\x36\xB6\x10\xF7\xBF\xCF\x4D\x03\xF9\x66\x13\xFE\x7E\xFC\x71\x6A\x13\x18\x7F\xBA\x16\xE4\x5E\x7E\x85\x04\x00\xD8\x7D\x5C\x71\x02\x08\x86\x4C\x24\x79\xF9\x79\x10\x0D\x81\xF8\x65\x60\x54\x01\x02\xBB\x14\xA7\x74\x01\x86\x0A\x05\x8C\x7F\x05\x67\x0A\x1A\x80\xEC\x02\xF6\x1D\x80\xFF\x75\x7F\x7D\x7A\x0B\x36\x7D\xEA\x0B\xFB\x00\x02\xCC\x20\x5A\x03\x0F\xFF\x7E\x6E\x2E\x02\x00\xBB\x14\x0C\x82\x08\x98\x7D\xEF\x5D\x03\x11\x85\x1F\x6B\x7F\x5C\x57\x81\x01\x0A\xF4\x73\x7C\x81\x00\x06\x3C\x82\x6B\x00\x82\xC9\x72\x67\x69\x7D\xB8\x63\x06\x46\x80\x6C\x15\x2B\x3F\x68\x09\xAD\x7E\xDF\x73\x10\x66\x02\x13\x8C\x0D\x8D\x29\x0A\xA8\x81\x21\x80\xC0\x2B\x83\xB1\x46\x17\xFE\x5A\x10\x7A\x5D\xCE\x3D\xAF\x0C\x50\x06\x5F\x3E\x44\x0B\x2E\x44\x0B\x5C\x40\xED\x44\x09\x91\x44\x0A\x81\x4C\x28\x39\x40\xA2\x09\x8A\x09\x0A\xDC\x44\x0A\x77\x82\x6B\x46\x57\x3B\x8F\xB5\x58\x5B\x3F\x07\x3B\x51\x5C\x3B\x38\x5A\xEA\x40", - "\x7D\x6C\x83\xEB\x65\x5A\xC6\x56\x10\xA5\x38\x63\x5F\xB0\x30\x4E\x1A\x81\x5B\xC6\x52\xFA\x5C\x77\x7F\x01\x07\xEC\x58\x06\x55\x84\xDB\x40\xFA\x18\x84\xDD\x6D\x1E\x47\x49\xE1\x24\x0A\x9F\x81\x78\x63\x5A\x63\x51\x0A\xB3\x6D\x76\x05\x52\x9D\x3F\x0D\xA9\x5A\xE8\x3A\x0A\xA6\x86\x1B\x94\x76\xDC\x0B\x27\x7F\x06\x34\x8B\xB4\x30\x87\x19\x86\x56\xD3\x76\xB9\x7F\x07\x39\x84\xB7\x38\x86\x2F\x98\x40\xC1\x75\x26\x01\x86\x16\x40\x0C\xC6\x55\x1D\x80\x6E\xC5\x81\x19\x90\x3E\x72\x7C\x13\x4C\x85\x4C\x19\x83\x3D\x71\xF4\x10\x86\x3B\x86\xAC\x7D\x61\x4D\x16\x86\x2C\x0E\xE7\x04\x0A\x6D\x8F\x12\x5C\x84\xDF\x4B\x3E\xDE\x83\x26\x4A\x0D\x3C\x60\x14\x29\x58\x51\x09\x59\x6A\x81\x65\x72\x3A\xC1\x68\xA6\x78\x0D\x20\x77\x09\xCF\x4C\x28\x31\x87\x97\x0F\xC3\x13\x63\x3F\x1A\x3F\x44\x08\x1F\x86\x56", + "\x2E\xBA\x01\x00\xF9\x1F\x00\x00\x21\x00\x01\x82\x80\x02\x0B\x82\x81\x82\x06\x89\x82\x9A\x0A\x85\x0E\x85\x12\x0A\xA9\x0A\x90\x1A\x84\x1A\x85\x1D\x0A\xC2\x0A\x88\x2A\x86\x26\x84\x2A\x0A\xDA\x0A\x82\x3A\x80\x36\x85\x37\x0A\xF6\x0A\x9A\x3A\x82\x1D\x09\x84\xFF\x31\xB2\x91\x9A\x80\x03\x99\x99\x35\xB7\xB2\x99\x9A\x9F\x7C\x9E\x9D\x3F\xB7\x81\xB8\x9A\x85\x9E\x9F\xA2\x3D\xC3\xBB\x88\xA0\xA5\x9A\x85\x00\x4F\xD1\x89\x82\x02\xAE\x83\x01\xAA\x03\x84\x18\xA2\x85\x03\xAD\x80\x03\x5E\x80\x07\x01\xB8\x01\xB2\xA2\xA5\x34\x8A\x89\x0A\x84\xA8\x99\xA4\xA6\x42\xF0\x84\xAE\xBD\xA4\xB9\xB8\xBB\x73\x86\xA7\xB2\xBB\xA0\xBD\xBE\xBD\x6F\xFE\xA9\xA2\xC7\xA4\xC0\xB5\xC2\x80\xF5\x89\xD7\xBB\xC1\xBF\x81\xBD\x86\xFC\x83\xCD\xCF\xBF\xC5\xC0\xCA\x93\x96\xCA\xDA\xCC\xC4\xCE\xC6\x81\x90\x98\xC8\xDE\xC5\xC8\xD3\xCA\xD2\x99\xA6\xDB\xCA\xDD\xCC\xD7\xCF\x80\xA1\xA8\xE3\xCE\xD5\xD0\xDB\xD2\xDA\xA9\xB6\xEB\xDA\xDD\xD4\xDF\xD6\x9B\xB7\xBE\xF5\xC0\xEB\xDC\xE1\xDE\xE3\xBF\x8B\x21\xAC\x0A\x87\xA9\xC9\xE7\xA2\x87\xD2\xF2\xC3\xDA\xE1\xDC\xE4\xC3\xB1\xF8\xD5", + "\xE8\xEF\xEA\xEC\xEB\xDC\xDF\xDD\xE1\xF1\xE3\xF3\xE8\xE8\xB2\xE7\xD1\xF4\xEA\xF1\xF4\xF7\xF7\xE8\xDB\xED\xF2\xF0\xFB\xF5\x85\x07\x61\x90\x0D\xF5\xFE\xF1\xF8\xF1\xF9\xFF\x7C\x74\x7E\x7F\xE6\x42\x81\x80\x81\xE2\x49\x85\x7A\x82\xC5\x4C\x87\x72\x83\xBF\x50\x89\x77\x82\x14\x8D\x85\x87\x83\x17\x91\x89\x87\x70\x13\x21\x54\x07\x7E\x08\x9B\x8E\x76\x88\xE4\x56\x86\x88\x86\x27\x9A\x89\x8B\x84\x2B\xA3\x8D\x89\x89\x28\xB1\x8A\x8A\x8C\x2C\xB4\x8E\x8A\x8D\x30\xB3\x8A\x8D\x8D\x3B\xB7\x8D\x8D\x8E\xC3\x57\x01\x58\x06\x20\xB6\x76\x91\x7F\x47\x83\x89\x93\x81\x4B\x85\x81\x8B\x8B\x00\x8E\x9D\x92\x84\x3E\xBC\x86\x95\x95\x58\x80\x99\x95\x94\x54\x9A\x9E\x94\x97\x24\x91\x9B\x05\x58\x1C\x05\x98\x93\x99\x4A\xA8\x9C\x92\x9A\x52\xAC\x9D\x94\x98\x50\x86\x8D\x99\x9A\x74\xAB\x95\x9F\x9C\x76\xB9\x98\x9F\x9E\x6F\xB2\x9D\x9F\x93\x38\x91\x9F\x05\x58\x20\x26\x97\x9F\x9F\x53\xA1\x9E\x9E\xA2\x80\xBF\x80\x9D\xA0\x8B\xB1\x9D\xA3\x95\x5F\x91\xA0\xA7\xA4\x5B\x96\xAE\xA2\xA6\xC3\x63\x01\x58\x09\x86\xBA\x98\xA2\x9B\x8C\x89\xA2\xA6\xA9\x97\xA8\xAB\xA4\xA6", + "\x95\xAC\xAF\xA3\xAA\xAA\x94\xAF\xAA\xAC\x9C\x99\xA4\x83\x09\x61\x68\x01\xA8\x9F\xA5\xA4\xA7\xAA\xAF\xA9\x80\xB0\xAE\xB0\xB4\xAE\xA5\xAD\xAB\xB1\xB6\xA9\xB0\xB2\xC4\x8A\xBD\xB0\xB3\x77\xAB\x01\x58\x0B\xBB\xA3\xA7\xA1\xAF\xD7\xBF\xA9\xB5\xB0\xDB\x83\xBD\xB5\xB1\xCB\xB3\xAE\xB3\xB7\xE3\xA2\xA8\xB6\xB9\xDA\xA8\xBC\xB6\xBA\xDE\xAC\xB0\xBB\xB3\xE2\x90\xBE\xB9\xB9\xBC\xA9\xB5\xBF\xBA\x7B\xAF\x06\x5B\xB9\xF7\xAD\xBD\xBF\xBB\xE4\xB2\xBB\x9C\x45\x09\x50\x59\x41\x0C\xD5\xBC\xB6\xB7\xBC\x02\xCB\xCF\xBC\xBD\x0E\xD1\xCA\xC3\xC4\xF6\x92\xC5\xC4\xC5\xF8\x96\xC9\xC4\xC6\xFE\x9A\xCD\xC4\xC7\x00\xCC\xC1\xBF\xC8\xC7\xA4\xC6\xB0\x81\x16\x45\xC5\xCB\xCA\x27\xE1\xBC\xCA\xCB\x2D\xF0\xBF\xCA\xCC\x31\xC1\xC6\xC8\xCC\x38\xF4\xC9\xCE\xCD\x33\xFC\xC9\x41\x0D\xFB\x97\xC2\xD3\xC6\x43\xDF\xC5\xD1\xC8\x0F\xCD\xC0\xC8\xC4\x4B\xCA\xD6\xBE\x0D\x41\xC4\xD2\xD6\xD1\x53\xC3\x77\x0D\x58\x38\x09\xC7\xD0\xD3\x5B\xCE\xD5\xD4\xD7\x5F\xDE\xD4\xD7\xD8\x48\xDE\xC5\xD9\xD3\x37\xFA\xC3\x40\x46\x2A\xC9\x4C\x0E\xD6\x61\xE9\xDE\xCF\xCE\x22\xFD\xC5\xDD\xCD\x77", + "\xF4\xD9\xD2\xDC\x79\xEA\xD3\xDE\xDF\x01\x7F\x01\x58\x10\x70\xE4\xD0\xDA\xE1\x62\xE7\xDD\xD4\xDF\x7B\xF6\xDD\xE0\xDE\x8F\xFA\xD6\xDB\xE1\x8A\xF1\xDE\xE3\xE4\x89\xD4\xEA\xE5\xE6\x9C\xCC\xE8\xE6\xE7\xE5\x43\x11\xD4\xE2\xA0\xCB\xE7\xE4\xDA\xA7\xE6\xE4\x80\x11\x61\x45\x11\x5A\x11\x61\x47\x11\x58\x47\x6D\xC6\x49\x11\x58\x4A\x21\x5B\x11\x58\x4C\x23\xE8\xD1\x13\x6C\x69\xE6\xE4\xE4\x9F\xCE\xEF\x11\x58\x50\x05\xE5\xE4\xE9\xC2\xCC\xF4\xF0\xEA\xCF\xEA\xE2\xE4\xF4\xD3\xD2\xF0\xE1\xE4\xD7\xC5\xF1\xF7\xF0\xD5\xDC\xF9\xF4\xF5\xDF\xD6\xF2\x43\x14\xBE\xDB\xE5\xEA\xF7\x7F\xE9\xFD\xDE\xFA\xD8\xEC\xFA\xF5\xF7\xCE\xF0\xFB\xF3\xFC\xE6\xCD\xF8\xD0\x48\xB5\xE1\xF8\xFB\xFA\xFC\xED\xFD\xFF\xFB\xFA\x71\x7D\x00\xF4\x7C\x3B\x2A\x25\x7D\x73\xF6\x75\x7F\xF6\x02\x8E\x7C\xF0\x4D\x82\x7C\xFF\x6E\x81\x04\x90\x8B\x4E\x2B\x07\x87\x7C\x0C\x93\x83\xFE\x7E\x7C\x82\x00\x8F\x83\x83\x1E\x9A\x83\x6F\x57\x07\x83\x04\x88\x83\x81\x04\x98\x81\x0A\xA6\x8A\x84\x05\xB2\x7E\x85\x03\x90\x87\x07\x99\x8D\x82\x09\xB5\x84\x82\x58\x05\x84\x0A\xB2\x82\x85\x15\xBB\x87", + "\x84\x2F\x80\x89\x0C\xC2\x83\x86\x1F\x81\x8D\x85\x44\x9D\x84\x0F\xB7\x80\x84\x1B\xA1\x84\x89\xFE\x59\x0A\x0E\xC7\x8C\x85\x2A\xBF\x80\x89\x58\x96\x88\x15\xD7\x8A\x8B\x21\x99\x8C\x8B\x60\x9B\x8A\x18\xDE\x8D\x8B\x22\x8B\x8F\x89\x0E\x62\x25\xFE\x66\x89\x88\x28\x86\x8C\x8C\x61\x90\x8F\x18\xEC\x8F\x8B\x39\x8A\x8D\x8D\x4F\x9B\x09\x58\x5C\x03\x8A\x39\xBE\x8C\x8E\x65\x97\x8D\x1D\xFF\x82\x90\xC7\x5D\x0D\x8F\x80\x91\x8D\x22\xF6\x8E\x8D\x33\x8E\x8F\x91\x14\x88\x8C\x24\xCD\x81\x93\xF2\x1E\x08\x91\x85\x8A\x92\x9E\x5F\x08\x93\x46\xB8\x8B\x92\x34\x92\x91\x25\xA3\x94\x93\x52\xA1\x90\x94\x6F\x8B\x90\x21\x9E\x93\x90\x55\xAE\x91\x93\x8C\x8E\x60\x18\x1D\x92\x94\x53\xA9\x90\x96\xAB\x95\x97\x29\xA4\x94\x87\x30\x34\x90\x95\x8E\x9C\x97\x2D\xAC\x91\x90\x62\x9A\x96\x98\xB1\x80\x9B\x27\xC2\x91\x98\x5B\x97\x3C\x24\x6B\x98\x97\x2B\xC8\x99\x96\x65\xAD\x92\x9A\xD8\x94\x9B\x34\xBA\x93\x98\x6E\x8D\x9B\x97\xCE\x8B\x99\x38\xD7\x9A\x9B\x6C\xA3\x0F\x97\xCC\x82\x60\x19\x68\x93\x9D\x62\x9E\x9A\x9C\xE0\x91\x9D\x37\xD6\x9E\x9C\x7A\x87\x9F\x9D\xE4\x98", + "\x9D\x3D\xE9\x99\x9E\x7B\x89\x9C\x9F\xFB\x8D\x9F\x3D\xFE\x95\x9A\x7B\x65\x0C\x9D\xF2\x9F\x9B\x3C\x80\xA3\xA0\x86\xBF\x9A\xA0\x0F\xB4\x86\x19\x1D\x97\x0C\x84\x8B\xA0\xA2\x05\xB8\xA3\x36\x84\xAB\xA2\x87\xAB\x96\x24\xD1\x9B\x4D\x1A\x16\xAA\xA1\x92\xAD\x8A\x0D\x24\xB0\x9F\x45\x89\xAA\xA4\x93\xBD\x9E\xA3\x1D\xBA\xA1\x36\xFA\x9D\xA0\x99\xA5\x9F\xA6\x34\xBA\x6F\x1A\x29\xAF\xA4\x9B\xB9\xA1\xA3\x2C\xBD\xA5\x50\x81\xA4\x86\x36\x3C\xA4\xA8\x2B\xA9\xAA\x4B\xC8\xAB\xA9\x9A\x83\xAE\xA9\x4A\xAD\xA6\x54\xC2\xA8\x69\x36\x07\xA8\xAA\x4D\xB1\xA1\x54\xD4\xA9\xAA\xA0\x9B\xAC\xA9\x53\xA0\xAC\x57\xE1\xA8\xAA\xB2\x9A\xAD\xAB\xD3\x8E\x0F\x55\xE7\xA2\x60\x94\x21\xA7\xA7\x31\xAF\xA8\x5B\xE3\xA4\xAE\xB1\xB6\xAD\xAC\x75\xB8\xAF\x5D\xF3\xAB\xAE\xAF\xA8\xAB\xA6\x1C\xA0\xB0\x4C\x82\xBE\xA7\xC0\x80\x00\x0E\x6B\xBE\xAE\x59\x8A\xB9\xAE\xBE\xBA\xAF\xB1\x8E\xAD\x49\x1C\x1D\x92\x0F\xC4\xB1\xAF\xAB\x90\xAC\xB1\x5F\x97\xBF\xAE\x9C\xA5\x3B\x0E\x9D\x94\x0E\x65\x84\xB2\xAE\x36\x75\x0B\xB4\x9E\xA3\xB1\x6A\x85\xBA\xB4\xB8\xA4\xB0\xB3\x91\xBA\xB1\x66\x9C", + "\xBB\xB0\xDA\xA4\x9A\x25\x6F\xA6\xB2\x6B\xAB\xBE\x5F\x3B\x28\xB3\xB7\xC0\xBA\xB6\x70\xAD\xB3\xB8\xD6\x86\xBD\xB4\xB6\xBB\xB3\x6B\x9D\xB1\xB8\xE2\x8E\xBF\xB8\xB0\xB2\xB5\x6C\xC9\xB3\xB7\x80\x38\x0F\xB7\xC5\xA8\xBB\x72\xB5\xBB\xBA\xC6\x79\x09\x2C\x2C\x21\xA7\x1E\x61\x2C\x0F\xB0\x3D\x09\x2C\x7E\x01\x2F\x1F\x61\x20\x11\xB0\x01\x10\xB5\x82\x01\x79\x75\xBC\xB1\xBB\x3B\x44\x10\xBB\xCF\xBA\xB8\x7D\xCC\xB9\xBB\xFA\x9D\xBA\xB9\xFB\xBC\xB9\x80\x8D\xB2\xBB\x02\xD4\xBB\xBA\x01\x25\x10\x7E\xD0\xBC\xBF\xFC\xBE\xBB\xC0\x00\xCD\xBB\x06\x86\x1B\xC0\xFD\x92\xC6\xC2\xFD\xAD\xC0\x83\xDC\x37\x11\x0A\xCF\xC7\xC2\x1F\xD9\xC2\x80\xA0\xCA\xC2\x0C\xCE\xC5\xC4\x21\xD4\x80\x22\x1E\xC8\xC5\x16\xE3\xC2\xC4\x8C\x69\x10\x8B\xAF\xC7\xC4\x81\x4A\x13\xC6\x04\xC7\xC2\x81\xFF\xB0\x73\x45\x38\xC1\xC2\x36\x8C\x13\x8F\xF3\xB4\xC4\x1A\xDB\xC1\xC7\x3C\xC8\xC0\x84\xC4\xC0\xC6\x20\xF5\xC4\x9C\x8D\x03\xCA\x92\xC5\xC8\xC8\x00\x0E\x11\x2C\x8F\x12\xCB\x8E\xCB\xC3\xCB\x26\xCC\xCF\xC9\x4E\xC7\xC9\x98\xA6\xC2\xCD\x2F\xE5\xCC\x91\x90\x1A\xCA\x8E\xEB\xC9\xC9\x2D", + "\xD4\xCB\xCC\x29\xC7\xCE\x9B\xDE\xCD\xCA\x30\xC4\x41\x12\x6A\xCD\xCC\x9B\xFB\x42\x13\x3C\xDC\xCB\xCE\x76\xD5\xCE\x9C\xFB\xCF\xCC\x33\xE4\xCF\xD0\x71\xC8\xD0\xBD\x13\x1E\xCF\x42\xC2\xD2\xD1\x02\xD4\x11\xA3\xF4\xC0\xD1\x41\xFA\xCF\xD2\x7F\xC4\xD0\xA5\x9A\xD1\xD1\x4A\xD0\xD5\xCA\x8E\xDE\xD3\x30\x95\x11\x2C\x4B\x21\x2F\x12\x61\x38\x11\x58\x19\x11\x2C\x4D\x21\x2B\x13\x61\x3C\x11\x58\x1D\x18\xB4\x4F\x32\xBF\xD1\x89\xCF\xC0\x28\x13\xDD\xD2\x4E\xD6\xD1\xD3\x98\xC1\xD6\xAF\x9F\xD0\xCE\x17\xE0\xD3\xD3\xC1\xD6\x85\x28\x3C\xDF\xD6\x61\xC9\xDD\xD7\xCF\xCD\xD8\xBF\x22\x1C\xD8\x62\xC6\xD0\x69\xA3\x15\xD9\xAE\xC6\xD5\xD8\x23\xD6\xD8\xD7\xDC\xD7\xD9\xB8\xE0\xDE\xDB\x6D\xE5\xDB\xDC\xA2\xCB\x88\x29\x61\x25\x15\xB0\x26\x11\x2C\xA7\x01\x2C\x2A\x61\x29\x15\xB0\x2A\x11\x2C\xAB\x01\x2C\x2B\x28\xBD\x15\x5B\xE9\xDF\xDC\x02\xCF\x16\xB6\xE8\xD3\xD8\x73\xC7\xD8\xDA\xC0\xC9\xE2\xB3\x8A\xE8\xD8\x86\xC8\xE3\xE1\x0E\x70\x17\xC0\x80\xE7\xE0\x69\xCF\xE5\xE1\x10\xE5\x3D\x2C\x13\xE5\xE2\xFD\xB2\x14\xE3\xDD\xDD\xE2\xC1\xA1\xE4\xE4\x71\xD4\xE5\xE4", + "\xE4\xC2\xE4\xC1\xD1\xDF\xDB\x7F\xEA\xE7\xE4\x26\xF5\x27\x2C\x20\xE1\xE6\x94\xEE\xE2\x4E\xB4\x01\x2D\x2D\x34\xE9\xE4\x9B\xC2\x26\x16\x3C\xF7\xE5\xCD\xC3\xE6\x21\x5B\x01\xED\xE0\x2B\xFB\x4C\x2E\x47\xEC\xE5\x91\xC4\xEA\xE8\x3D\xEF\xEB\x9D\x39\x1C\xE8\x87\xF8\x5A\x17\x55\xF9\xE3\xC5\xDB\xE6\xE3\xAE\xED\xE0\xE9\x30\xF1\xEA\xD8\xDB\xCB\x17\xAC\xD8\xE7\xEC\x08\xFC\x16\xD9\xDC\xEF\xEB\xA6\xC9\xEA\xEB\x5E\xEE\xEB\xD8\xE0\xEF\xE5\xBA\xFE\xE6\xED\x61\xE3\x21\x2F\x61\x2E\x17\xB0\x3F\x11\x2C\xC0\x01\x2D\x30\x61\x22\x19\xB0\x03\x19\x2C\xC4\x01\x2D\x31\x28\xB6\x18\x7F\xF4\xEF\xEE\x1C\x88\x1B\xDA\xF1\xEF\xEC\xB4\xD4\xF1\xEF\x8F\xF2\xE8\xDE\xF6\xEA\xF2\xAB\xED\xEB\x4F\xC9\x13\xF3\xE7\xF0\xE3\xF4\xCB\xE5\xF2\xB5\xCA\x02\xF6\xDC\xD0\xEC\x4D\x65\x2A\xF5\xF2\x6C\xEB\xF5\xE6\xF3\xEB\xF2\xC8\xE4\xF2\xF6\xB5\xFD\xF3\xED\xB0\xF7\xF2\xCE\xCD\x4C\x19\xAF\xF8\xF1\xEE\xB4\xFB\x4F\x66\x01\xFE\xF7\xAC\xE2\x22\x33\x47\xF6\xF6\xD3\xF8\xF6\xF3\xCF\xEB\xE3\x33\x4C\xFD\xF2\x68\x14\xFC\xF8\xBB\xE2\xF8\xF4\xBC\xF7\xF5\xDE\xCD\xF9\xF6\xDC\xE8\x69", + "\x34\x57\xF9\xF8\x4C\xD2\x19\x2C\xD3\x01\x2C\x35\x61\x25\x1B\xB0\x16\x18\xB5\xD7\x04\xFF\xEC\xE5\xFB\xFA\xED\xD9\xF8\xF9\xF3\xF9\xFF\xF0\xF4\xFB\xB6\x6C\x32\xFB\xFF\xFA\x75\x7F\xF8\x70\x80\x98\x69\x0D\xFF\x72\x80\xDF\x7E\x7D\xBA\x7E\x7C\x4B\x4A\x0D\x07\x87\x7F\x09\x8D\x7D\x12\x81\x7D\x36\x4B\x0D\x0F\x8C\x80\xF6\x78\x81\x03\x88\x80\xC7\x4C\x0D\x17\x80\x7E\x19\x80\x82\x1B\x80\x81\x9D\x7D\x0D\x61\x1E\x0D\x61\x1F\x0D\x61\x10\x0E\x61\x11\x0E\xA8\x52\x0E\x1F\x8A\x80\x8C\x43\x0E\x31\x83\x81\xE1\x77\x83\x21\x82\x83\xFC\x7A\x81\x90\x74\x0E\x61\x15\x0E\x61\x16\x0E\x61\x17\x0E\x61\x18\x0E\xA8\x59\x0E\x35\x84\x81\xAA\x5A\x0E\x49\x8D\x59\xEB\x0D\x84\x39\x86\x83\x51\x8A\x84\x3A\x81\x80\xE2\x1C\x0E\x61\x1D\x0E\x61\x1E\x0E\x61\x1F\x0E\x61\x10\x0F\xA8\x51\x0F\x50\x83\x82\x36\x42\x0F\x63\x81\x81\x54\x82\x85\x64\x82\x82\x68\x88\x83\x35\x13\x0F\xA8\x54\x0F\x61\x15\x0F\x61\x16\x0F\x61\x17\x0F\x61\x18\x0F\xA8\x59\x0F\x67\x8B\x80\x14\x4A\x0F\x7D\x8C\x48\xFB\x08\x5A\xFC\x01\x16\xFD\x01\x16\xFE\x06\x16\x61\x10\x00\x06\x33\x10\x8D\x87", + "\x3D\x01\x0F\x88\x01\x12\x89\x04\x8C\x81\x4A\x62\x00\x94\x84\x89\x96\x8B\x65\x67\x0D\x16\x03\x1E\x89\x03\x1D\x00\xD4\x10\x8A\x02\x12\x8A\x84\x14\x8A\x01\x16\x8A\xA2\x18\x8A\x00\x0A\x8A\xB2\x1C\x8A\xAE\x8B\x1D\xB0\x83\x8A\x0A\x11\x8B\xE0\x13\x8B\xA7\x85\x8B\xB4\x8E\x14\xCB\x26\x14\x6B\x1C\x8B\xAF\x8A\x10\x0E\x07\x2C\xBE\x8A\x10\x1D\x24\x18\x9A\x85\x16\x84\x1F\x8B\x06\x18\x10\xA2\x1D\x15\x84\x16\x14\xC9\x84\x1D\xCC\x83\x10\xCE\x82\x1B\xD0\x82\x1A\x46\x13\x16\xD1\x8D\x13\xAC\x8C\x1C\x84\x1A\x8C\xDA\x8D\x13\xD5\x82\x10\x2F\x18\x8C\x0A\x12\x8E\xB2\x15\x8E\x01\x17\x8D\xDB\x19\x8D\xB2\x1B\x8D\xD4\x16\x14\xAC\x8A\x89\x46\x1A\x8E\xDB\x15\x8C\x53\x14\x1D\xD3\x8B\x8C\x0A\x1E\x8E\xE0\x10\x8F\xF9\x8D\x13\xDC\x83\x8E\x3A\x1C\x8A\xF8\x80\x1E\x09\x93\x1E\xFA\x86\x10\xCA\x18\x8E\xC0\x8B\x1D\xEC\x84\x10\xD4\x12\x90\xE0\x12\x8D\x11\x92\x91\xFF\x85\x91\xF3\x84\x90\x1D\x97\x90\x0A\x10\x8E\xA2\x1B\x90\x46\x1D\x90\x03\x17\x8E\xA2\x1A\x89\x87\x13\x91\x00\x93\x1E\x16\x9C\x90\x1E\x9D\x8D\x20\x99\x5B\x3A\x14\x92\x25\x9A\x13\x13\x9C\x8A", + "\x18\x99\x91\xE3\x1C\x92\x1C\x92\x93\x37\x15\x90\xF1\x8E\x8D\xE9\x84\x1D\x36\x97\x93\x33\x13\x91\x0F\x99\x92\x0A\x1F\x92\x26\x97\x10\x3F\x96\x90\x37\x1A\x89\x4E\x94\x8E\x1B\x94\x18\x55\x98\x94\x32\x12\x94\x03\x93\x93\x06\x12\x92\xB2\x17\x94\x5A\x9F\x0F\x13\x98\x92\xB2\x14\x95\xD4\x87\x95\xCF\x8F\x91\x41\x9C\x96\x33\x15\x8F\x46\x9E\x96\x32\x19\x93\xFC\x8D\x94\x69\x99\x10\x2D\x96\x14\x59\x93\x96\x5C\x97\x91\x44\x99\x10\x62\x93\x13\x81\x98\x94\x4A\x95\x97\x09\x1D\x97\x3D\x9A\x96\xD8\x82\x97\x31\x1A\x89\x88\x9F\x94\xED\x81\x95\x43\x9A\x13\x8F\x93\x96\x31\x1F\x8D\x71\x90\x94\x49\x9A\x10\x66\x9B\x1D\x8E\x97\x97\xCD\x82\x99\x5D\x9D\x96\x9A\x92\x13\x70\x91\x8E\x8C\x94\x96\x8E\x70\x1E\x9F\x9E\x8F\x78\x92\x9A\x7E\x94\x99\xA9\x98\x90\x99\x92\x95\x9B\x99\x10\x4B\x97\x96\xCA\x31\x13\x3E\x98\x95\xA9\x9A\x89\xCE\x12\x1A\xBD\x9B\x96\xA5\x91\x13\x95\x96\x99\x98\x98\x9A\xC5\x9A\x9A\x09\x1D\x99\xAC\x9B\x9B\xCC\x91\x9A\xBE\x9B\x9C\xC7\x93\x96\xA7\x93\x92\xA9\x94\x97\x10\x96\x15\xA0\x96\x8D\xB0\x90\x93\xB2\x9B\x9C\xB4\x9A\x9C\xB6", + "\x93\x97\x0A\x19\x9B\x9E\x9B\x9A\x89\x9F\x9A\xD3\x95\x9E\x8D\x9A\x9E\x90\x94\x91\xED\x93\x99\xA4\x9E\x9E\xFF\x09\x9C\xD8\x9B\x9C\x65\x96\x98\x06\x1A\x93\x56\x9C\x9E\xC4\x96\x9F\xD5\x9A\x95\xD7\x91\x96\xD9\x90\x9F\x3D\x1A\x89\xFE\x98\x93\x8A\x9F\x8E\xA9\x93\xA0\x48\x93\x9E\xF9\x96\x9F\x85\x9B\x9D\x8E\x8D\x9D\x50\x93\x9F\xA3\x93\x13\x9A\x86\x8F\xFF\x92\x9D\x01\xA4\x9F\x33\x10\xA1\x37\x98\x9F\x06\xAA\x9F\x9C\x9C\x9F\x17\xAE\x9A\x20\xAB\x98\xD4\x93\x9B\x07\x43\x98\x37\x9A\x9D\x4C\x94\x93\x37\x13\x9C\x2E\xA2\xA0\x30\xA0\x98\xB5\x92\xA2\xE6\x98\x9B\x2A\xA2\x10\x60\x1C\xA2\xDE\x9A\xA1\xB1\x93\x95\x0A\x13\xA4\xC2\x9D\xA0\x01\x9F\xA0\x3B\xAF\x95\x3D\xAB\xA1\x3F\xA6\x10\xCE\x93\x1E\x9A\x8A\xA4\xEB\x8C\xA4\x2E\x9E\xA4\xE2\x91\xA3\x07\xAB\x8F\x16\xA2\xA4\x18\xA1\x99\x46\xA0\x9E\xF5\x9E\xA3\x97\x95\x94\xE4\x98\xA6\xD1\x93\x10\xE8\x9F\x9C\x09\x1A\x15\x44\xA9\xA1\x21\xA2\xA5\xEF\x91\xA7\x63\xA2\x9F\x75\xA7\xA4\x23\xAF\xA4\x03\x10\x96\xDB\x12\xA3\x25\x9B\x9F\x61\xA1\x10\x72\xAB\xA4\x00\xA9\xA3\x6C\xA4\xA2\x25\x95\xA0\x81\xAF", + "\xA5\xFD\x91\xA4\x86\xA9\xA7\x79\x9D\x13\x7B\x9A\x95\x8C\xA4\x8F\x6A\xA3\xA1\x6C\xA5\xA1\xBD\x8F\xA1\x2B\xAB\xA7\x66\xA3\x13\x97\xA8\x94\x99\xAF\x97\x50\xAB\xA6\x76\xAD\xA6\xE6\x8F\x9D\x96\x96\x9C\x7E\xA2\x10\x1E\xA5\x93\x90\xAF\x89\xAE\xAF\xAA\xA7\xAE\x95\x03\x12\xA8\x82\xA1\x9F\x6F\xAB\xA5\xCB\x95\xAA\x37\x99\xAB\x37\x16\xA2\x8F\xA8\xA2\xCD\x97\xAB\x96\x94\xAC\x6F\x9E\xA5\xC8\xA1\xA9\x65\xAF\xAA\xFF\x0C\xAC\xA6\x9B\xA9\x27\xA4\xA1\xE7\x9A\xAC\x63\x92\xAC\x25\x94\xAD\x69\xA9\x10\x80\xAA\x90\xB5\xAD\xAA\xD1\xA8\xAB\xB1\xA3\x89\x51\xAC\xA7\x53\xA6\xAB\xE5\xAB\xAC\xE7\xA0\x00\xBC\xA3\xAE\x01\x1F\xAB\x7A\x99\x9A\xDC\xA2\x8F\x5D\xA0\xAE\xE9\xA3\xAA\xEB\xA4\xAE\xA2\xA2\xAD\xDE\xA7\x9F\xCE\xA8\xAD\x60\xAF\xAF\xE6\xA9\xAF\x06\x11\xAF\xCF\xAE\xA6\xBB\x86\x10\xB6\x83\x1E\xB8\x8B\x8A\xBA\x89\x8B\x09\x1F\xB0\x9A\xA5\xB1\x0D\xB1\x8A\x19\xB5\x8A\x1B\xB9\x8A\x1D\xBD\x8A\x1F\xB1\x2F\xF1\x97\x18\xAC\x83\x8C\xAC\x21\x9F\xC7\x86\xB0\x96\x97\xAF\x31\x96\x9F\xC6\xA2\xAE\x0B\xBE\xAF\x8A\xAB\xAA\x01\xBE\xA8\x30\xB4\xB0\xD0\xAA\xB2", + "\x7C\x9F\xAE\x0A\xB8\xB3\x0C\xB7\xB2\xA0\xA2\x10\xC1\x91\x8C\x05\xBF\x2C\xF1\x97\xA8\x46\xB1\xB4\x01\x13\xB4\x0E\xA8\xB0\x03\x1C\xAD\x87\x11\x9F\x82\xAC\xB2\xBA\xA2\x10\x48\xB1\x30\xF1\x98\xA5\xB2\x86\x97\x40\xBC\xA0\x3C\xA4\xB1\x06\x10\xB5\xF2\xA0\xAF\xDA\xA4\xA0\x0A\x1F\x21\x5D\xB7\xA3\x0A\x1C\x10\xED\xA6\x9D\xC6\x84\x8C\x4A\xB0\x00\x5A\xB7\x8B\x67\xB0\xB7\x5E\xB6\x10\x6C\xB2\xB1\x09\x18\xB6\x9F\xA7\xB7\x03\x19\xB7\x33\xBA\xAE\xDF\xA4\xA5\x76\xBA\xB6\x09\x12\x24\x60\xBA\xB1\x89\xBC\xB1\x8B\xBE\xB1\x8D\xB0\xB2\x8F\xB6\xB1\xA8\xAA\xB8\x7A\xBE\xB0\x1F\xB2\xB9\x55\xBE\xB8\x95\xB1\x91\x5D\x23\xB2\x1F\xB6\xB2\x7D\xB6\xB8\x06\x19\xB2\x81\xBC\xAF\x83\xB3\x10\xFA\x19\xB6\xB7\x96\x10\x73\xB0\xB1\x29\xAF\xB8\x55\xA5\xAF\xCB\x9C\xB4\x82\xBF\x0F\xB4\xB6\xBA\xFF\x0D\xA1\x79\xA6\x01\x65\xB1\xA1\x0A\x19\xBA\xA1\xBB\xBA\x03\x1D\xBA\x3B\x99\x91\xF1\x9C\xBB\x6D\xB6\xB6\x09\x10\xBC\x49\xBE\xB7\x62\xAF\xB8\x0A\x07\xB9\xD2\xB1\xB9\xD3\xBB\xB9\x8C\xB6\xBD\x9A\xB4\xB4\x96\xB4\xBD\xDC\xB8\xBD\x4E\x1D\xB9\x71\xB4\xB2\xC2\x85\xB8\xC2", + "\xB2\x10\xA4\xBD\xB4\x2E\xB9\xAD\xDD\xBA\xBD\x94\xBC\xBE\xD7\xBE\xBE\xD9\xBB\xB5\x18\xBB\xBE\xF2\xBB\xBD\xDE\xB8\xB9\xC5\xA3\xB1\xDE\xB2\xB2\xE1\xBF\xB9\xE4\xBD\xAF\x01\x17\xBE\x4D\xAE\xB4\x02\x13\x91\xE0\xBE\xBC\x5F\x1F\xB1\xD1\xBF\xB8\xF4\xA3\xB9\x02\x1D\xC0\x3A\x14\xB5\xF9\xB7\x98\xD5\xB0\xBF\x90\xB7\xBF\x15\xC5\xBF\xED\xBA\xC1\xEF\xBC\xC1\xF1\xB4\xB7\xF3\xB8\xC1\x8F\xBC\xBF\x08\xCF\xBD\x0E\xC1\x10\xA0\xBD\xBC\xA2\xB3\x10\x02\xC0\xAC\xE9\xB9\x10\xC4\xB4\x22\x59\xBF\xB1\x8C\xA2\xC1\x33\x17\xBB\xD2\xAC\x8A\x57\xB0\x1E\x38\xCF\xAA\xAC\x8D\xC2\x46\x1D\xC3\x96\x92\xC4\x63\x94\xC4\x5A\x96\xC4\x48\x98\xC4\x25\xAA\x16\xD4\x1A\xC4\x8D\xA9\xA4\xD4\x1B\xC3\xB8\xB6\xC3\x32\x12\xC5\xD2\xA4\xC5\x31\x16\xC5\xAF\xA8\xC5\xFF\x0A\xC5\x2B\xB9\x9A\x5E\xCB\xAD\xA9\x9E\xC4\x41\xCF\xAE\x61\xC7\xC3\x63\xCF\xAE\x40\xCD\x13\x64\xCC\xC6\x69\xC3\xBB\x6F\xC6\x9F\x6D\xCA\x13\x73\xC7\x13\x75\xCD\xAC\x09\x16\xC0\x6E\xC0\xC7\x04\xC9\xC0\x84\x17\xC7\xD5\xA5\xB4\xDB\x10\xC8\xA7\xB6\xB5\x4D\xCA\xC6\x87\xCC\xC7\x72\xC1\xC7\x6C\xA4\xC8\x02\xB9", + "\xC7\x89\xCF\xC2\xAC\xBF\xB1\x0B\xA7\x13\x5C\xCC\x8A\xF8\x1F\xC7\x8C\xCB\xAA\x3A\xCF\xB1\x99\xC2\x1A\x8E\xCE\xC8\x3F\xCE\xC9\x91\xCD\xC8\x9B\xC5\xBB\x98\xC5\xCA\xAB\xA1\xCA\xEF\xAF\xC9\xB2\x1C\xCA\x7D\xC0\x00\x7A\xC9\xB9\x00\x0E\xCA\x83\xC7\xCA\xB8\xBC\x8A\x31\xC4\xCB\xB6\xCC\xC3\xEF\xA5\xC9\xA4\xA8\xCB\xD2\xA2\xCA\x0A\x17\xC6\x32\x10\xCB\x92\xCC\xC2\xAA\xC5\xBB\xC8\xC6\xCA\x8A\xCE\xCC\x8B\xCF\xCC\x9C\xCC\xC4\x9A\xC2\xCD\xA8\xC0\xC5\xD5\xC9\xCC\x02\x10\xCC\x32\x1C\xC5\xCD\xC3\xCD\x78\xA9\xCD\xD0\xCC\xA6\xA3\xC2\xCE\xAB\xC2\xCC\xAF\xAF\xCD\xCC\xC8\xCE\x43\xCF\xAE\xB3\xC6\xC7\xEC\xCE\xB6\x30\xCB\xCC\xB9\xC8\xA0\x25\xC1\xAE\xEB\x96\x10\x8C\xA3\x91\xFB\xCA\x10\x19\x09\xA7\xFF\xC3\xA7\x01\x14\x24\x02\xD0\x00\x15\x09\xA7\x07\xD4\x18\xC6\xC7\x93\x0B\xD3\xA8\x0A\x1D\xCB\xF9\xC8\xBA\x79\xA8\xBF\xE5\xB8\xC2\x79\xA9\xC2\x1A\x99\x10\x0B\xC8\xA8\x06\x1F\xCE\x33\x1D\xD0\xF1\x9C\xAD\x20\xD1\xB7\xDC\xA3\x91\x7C\xB9\xA5\x7B\xB9\xA7\x27\xDB\x1D\xBB\x6C\x93\x2E\xDF\xD2\x30\xD1\xD3\x3C\x9A\xA0\xBB\x22\xC5\x2F\x9D\xBA\x38\xD8\xCD", + "\x93\xC3\xCF\x3C\xDB\xD3\x3E\xD3\xBC\x3A\xD3\x10\x88\x9B\x90\x13\x9B\xD1\x3F\xBE\x90\xEA\xB8\xD4\x40\xAB\xD4\x4A\xDD\xD4\x47\xDF\xD4\x0F\xC1\x92\x52\xDA\xAF\x54\xD9\xAA\x56\xDF\xA7\x53\xD7\xD5\x02\x18\xCF\xF8\xCF\xB0\x18\xD1\x10\x10\xDC\xBC\x02\x12\xD6\x01\x14\xD6\x00\x06\xD6\x68\xDF\xBB\x6A\xDB\xBC\x6B\xD6\x10\x66\xD5\xA5\x2D\x9D\xC2\x2B\xD1\x10\x73\xD6\xD0\x0A\x18\xBC\x06\x18\xB8\x2D\xA2\x10\x7A\xDA\xCC\x87\xB5\xB7\x7F\xD9\xD2\x81\xD6\x10\x09\xD9\xD7\x77\xDA\x10\x04\xD6\x10\x01\xDB\xD7\x01\x1B\xD8\x7E\xDA\xD8\x80\xD0\xD9\x82\xD2\xD9\x84\xDE\xCF\x87\xD9\x10\x80\xB2\x10\x63\x23\xD8\x45\xA6\x10\x9B\xD6\xD8\x09\x1D\xC2\x9F\xD3\x10\x7D\xD2\x10\x75\xD3\xDA\x7C\xD1\xD9\x03\x18\xDA\x01\x15\xDA\x01\x15\xD8\xAB\xDA\x10\xAE\xD0\x00\x78\xD1\xDB\x09\x19\xD8\x03\x15\x26\x9C\xD4\xA7\xB9\xD2\xDB\x6F\xB9\x10\xBA\xD0\xDA\x06\x15\xD7\xC1\xD4\xDA\xAA\xD2\x10\xC5\xD9\xDA\x09\x10\xDB\xC8\xDE\xDB\x09\x15\xDB\xCD\xD7\xDB\x0D\x1E\xDC\x8C\xD0\x00\x0E\x1B\xDB\x01\xC3\xDD\xD8\xD0\x00\x75\xD7\xDD\xC2\xD3\x10\xDD\xD4\xDD\x03\x1C\xDC\x01", + "\x1E\xDD\xC6\xDF\xDC\xDA\xD6\x10\xB8\xD2\x10\x1E\x0E\xD2\xD0\xD1\xD3\x4F\x08\x8A\xBA\xB9\x10\xA0\x23\xD3\x72\x27\xBB\x2D\x02\xD3\x03\x10\x05\xF2\xDB\x2B\xF9\xDA\xDF\x01\x11\x05\xFD\xD9\x10\x2F\x99\x35\x00\xE0\x00\x52\x03\xE0\x61\xBA\x10\x06\xE0\xE0\x53\x0A\xE0\x11\x94\x38\x07\xE4\x05\x10\xE2\x10\x88\x9E\x3A\x07\xE5\x05\x15\xE1\x10\x17\xE7\xE0\x00\x06\x05\x1B\xE4\xB6\x09\x19\x3B\x3C\x97\xBB\x57\x01\xE2\x0B\x9D\x3B\x25\xEA\x10\x58\x01\xE2\x35\x12\x05\x1E\xE9\x05\x2E\xEC\xE2\x1E\xEA\x05\x21\xE6\xD4\x02\x17\x49\x07\xEB\x05\x21\xEF\xAB\x9C\x47\xE0\x5C\x0D\xE3\x0A\x1F\xE3\x00\xED\x05\x33\xE9\x10\x13\x57\xE0\x5E\x01\xE2\x0F\xB6\x54\x07\xEF\x05\x21\xE2\xC5\x93\x5B\xE2\x04\x2D\xBA\xA7\x54\xE5\x4D\x23\x91\xA2\x58\xE5\x6C\x28\xCF\xA0\x5C\xE5\x77\x2F\xD5\x00\x05\x59\x60\xEA\x27\x10\xDF\x5D\x65\xE0\x00\x60\x01\xE2\xAC\x87\x5D\x07\xE1\x06\x21\xE7\xE6\x2E\xD7\xBB\x62\x0C\xE6\x0A\x1E\xE6\x00\xE3\x06\x21\xE6\xD6\xE5\x57\xE0\x64\x0B\xE7\x0A\x17\x5E\x07\xE5\x06\x80\xE9\x10\x82\xE0\xE0\x66\x01\xE2\x03\x0A\x92\x09\x1E\xC4\x1E\xEC", + "\x88\x8E\x35\x13\x82\xAF\xD2\xF3\xDA\x37\x35\x1C\xA8\x2F\xD6\xB3\x1C\x45\x13\xBB\xC7\x1C\x35\x17\xBB\xB3\xA8\x2F\x35\x18\xE3\x7A\x25\x13\x52\xC1\xEA\xFE\x26\xEA\x72\x25\x13\x2F\x98\xEA\x48\x35\x13\x1E\xD3\x1C\x9C\xE8\x5A\xAC\xEB\xEA\x0A\x18\x98\xAE\xE4\x2F\x35\x1C\xCD\xD7\x12\xE9\xB4\xEF\xD0\xB6\xE0\xC9\x21\x54\xEA\x00\x0C\xEB\xDC\x15\x13\x66\xD2\x1E\x35\x18\xCF\x9A\x8F\xB0\xC6\xEB\xEB\x9D\x45\x13\x10\xDE\xE8\x72\x2C\x8A\xB3\xDA\xEC\x5A\xAD\xBA\xEB\xD8\xAE\x04\x2C\x8A\xDB\xEB\x27\x35\x1E\xD8\xCF\xB6\x10\x83\x26\xA3\xBF\x1C\x8A\xE2\xE5\xEA\x0A\x15\x28\x3D\xD3\x10\x26\x0D\x49\xA0\xE1\xEC\x06\x18\x2B\x8D\xEE\x38\xB7\xB7\xED\xE5\x15\x13\x2A\x01\xD4\x02\x14\x30\x06\x19\xEB\xDC\x17\xBB\xDF\xE8\xED\x07\x3C\xEF\x01\x17\x35\xE6\xE3\x1C\xB7\xB9\xEE\xE0\xEC\xE0\x06\xF0\x00\x3E\x0D\x49\xA7\xE2\xEF\x03\x12\x38\xF5\xE0\x39\x52\xC8\xEF\xC5\x15\x13\x1A\x1D\xEE\x02\x14\x3B\xFF\xE2\x27\x52\xC3\xF0\xF9\xEA\x10\xB7\x3E\xF1\x01\x17\x3C\x09\xF7\x1D\x52\xCC\xF0\x04\xF6\x10\xC9\x38\xF2\x1F\xED\x49\xAD\xE4\xF1\x02\x14\x42\x17\xFA\x37", + "\x2F\x9A\xF1\x9E\xE1\x12\x0F\xF3\x4B\x2B\xFC\x1D\x2F\x94\xF2\x1B\xFA\x10\xBE\x42\xF3\x15\x51\xF4\xB5\xE9\x10\x2E\xF5\xF2\x09\x10\x52\x3F\xD2\x10\x6A\x5A\xF4\x0F\xF0\xF0\x2F\xDE\x56\xDC\x90\x39\xAD\xBC\xF3\xBF\x15\x13\x64\xE1\xF5\xD6\x5D\x49\xDA\xE6\xF3\x01\x18\xE6\x60\xF0\x00\xEB\x54\xF5\x32\xFD\xF4\x45\xF9\x10\xED\x52\xF3\x14\x6A\xF6\xFA\xC1\xED\x0A\x1D\x61\x39\xF7\x3D\x88\x9C\xF5\xB2\xEA\x10\x37\x62\xF3\x69\x62\xF7\x42\xD8\xD8\x64\xF0\x00\x78\x62\xF3\xA8\x60\xF8\x16\xE6\xD9\x04\x25\x13\xAA\x62\xF3\xB6\x68\xF8\x01\x1B\x90\x56\xFE\xD2\x9F\x00\x9D\x51\x2B\x90\x7A\xFD\xEB\x0A\x14\x6D\x32\xF3\x6F\x90\xF2\xE2\xEA\xD3\xF8\xF5\x62\xF3\x02\x7F\xF9\x0B\x9C\xF6\x3D\xF9\x10\x12\x72\xF3\x40\x7F\xF9\x13\x93\xF9\x3C\x96\x74\x77\xFC\x3E\x13\x99\xF9\xC7\xEA\x10\x58\x72\xF3\x81\x7E\xFA\x82\xFB\xF8\x0A\x13\x78\x32\xF7\x0C\x9D\x43\x91\xA8\xFD\xF5\x0A\x12\x79\x32\xFB\x7C\x9F\xF4\xEC\xB0\xF9\x91\xD3\x73\xFB\xFD\x34\xEC\xB6\xFF\xD2\xE7\x72\xF3\xFE\x7B\xFC\xBD\xFD\x24\x35\x16\x80\x32\xFA\x82\xD8\xFC\xF4\x83\xFC\x82\x32\xF2\x84\x9F", + "\xFF\xAB\x14\xDB\xF7\x04\x24\x84\x82\xCA\x27\xCC\xE3\xF8\x48\x8F\xF9\xE2\x18\xCF\xD3\xFE\xD2\x4C\x81\xCE\x06\x1C\x85\x9F\xF8\xCF\x44\xF9\xFA\x06\x1E\x85\xF6\xF3\x10\x70\x41\xFF\x4A\x7C\xED\x7A\x10\x72\x43\xFF\x62\x08\x7A\x47\xF3\x4F\x58\x7C\x6F\xF2\x2B\x26\x98\x70\x60\xFC\x7B\x95\x10\x68\x31\x7D\x00\xD3\x26\x59\x6D\x7E\x11\x4C\x0F\x70\x7F\xF2\x06\xD6\x73\x7C\x4F\x40\x44\x07\x81\x20\x09\x45\xCF\x76\xD6\x7B\x7E\xF1\x70\x09\xC5\x65\x39\x19\x44\x39\x16\xD6\x45\x7C\xFA\x66\x08\x04\x04\x12\x52\x62\x04\x0B\x02\x84\x11\x95\x58\x80\xC0\x41\x01\x35\x80\xBD\x15\xA5\x1E\x81\x46\x4A\x00\x32\x82\x18\x7B\x80\x36\x15\xA5\x26\x83\x0B\x83\x08\x0F\x01\x08\xA1\x6D\x21\x87\x27\x55\x52\x0B\x9A\x7C\x7B\x5A\x09\xAA\x6E\x26\x8A\x27\x2D\x48\x0E\x9C\x45\x19\x04\x0A\x9C\x21\x96\x4E\x03\x91\x4A\x06\x12\x82\x03\x0E\x03\x1A\x82\xF1\x0D\x92\x46\x80\x14\x84\x77\x60\x82\x20\x23\x01\x31\x85\x1E\x2D\x4B\x13\x97\x7D\xF4\x69\x0D\x81\x08\x14\x0C\x06\xC5\x0D\x0B\x75\x54\x6D\x7C\x91\x35\x6A\x6A\x7C\x93\x29\x01\x1D\x91\x80\xB2\x57\xB8\x51\x7D\xC1\x7A", + "\x02\x7F\x83\x6F\x15\x74\xE0\x6F\xD6\x43\x7D\x15\x06\x08\xC3\x0E\xA6\x75\x6B\x9D\x77\x04\x86\x08\x16\x0D\x08\xD7\x0D\xBC\x73\x6C\x03\x0C\xD8\x55\x81\x80\x0D\x02\x15\x84\x77\x13\x78\x98\x86\x90\x7E\x7D\x84\x0E\x02\x1E\x87\xD2\x61\x79\xA1\x81\x20\x31\x75\x33\x83\x10\x2F\x02\x29\x95\x7A\x82\x80\x00\x22\x5A\x9E\x40\x03\x2F\x84\x05\x61\x29\x75\x6F\xD9\x6E\x69\x18\x06\x0B\x89\x5A\x87\x00\x76\xA3\x86\x20\x32\x00\x2D\x83\x03\x14\x44\x2B\x4F\x7D\xB1\x81\xD9\x4E\x7A\x83\x05\x03\x5A\x82\x0D\x06\x86\x0A\x0C\xF9\x4A\x08\xF2\x60\xE9\x41\x87\x40\x18\x01\xBD\x84\x4D\x14\x87\x2E\x80\x8C\x39\x02\x1C\x80\x00\x3D\x01\x1B\x82\x08\x6A\x86\x06\xF0\x82\x41\x1E\x01\xDF\x82\x08\x22\x87\xD7\x63\x00\xEC\x11\x4D\x03\x02\xDF\x87\x08\x2B\x86\xDA\x63\x0D\x83\x7F\x13\x33\x6D\xB1\x5B\x19\xAB\x25\x6F\x7B\xC6\x79\x83\x2A\x2C\x78\x75\x6B\x13\xB7\x29\xCC\x61\x10\x49\x6E\xBA\x64\x10\x48\x00\x1A\x84\x10\x83\x80\x00\x2C\x6D\xC3\x67\x26\xE6\x6A\x20\x25\x76\x02\x83\xE2\x73\x86\x78\x13\x88\x03\x0C\xDD\x54\x89\x26\x1B\x04\x0A\x89\x93\x1A\x88\x03\x0E\x53", + "\x16\x87\x69\x20\x12\x82\x08\x40\x03\x89\xD9\x27\x24\x86\x08\x86\x82\x10\xE2\x0D\x13\x1E\x88\x50\x6C\xDB\x46\x08\x11\x0A\x10\x22\x8B\x46\x8B\x25\x36\x89\x0C\x83\x7D\x27\x06\x11\xE5\x0D\x7D\x73\x89\xF6\x86\x86\x10\x09\x84\x0A\x2B\x28\x88\x00\x10\x02\x5A\x81\x0A\x30\x89\x3B\x14\xEF\x06\x0B\xBB\x66\x8A\x53\x05\x27\x85\x0F\xA2\x83\xEF\x41\x88\x05\x32\x08\x09\x0A\x5A\x06\x8A\x2A\x02\x15\xC7\x0E\x56\x86\x08\xFA\x16\x28\xA2\x0F\x2A\x0B\x14\xFA\x10\xB5\x04\x8A\x83\x7F\x0A\x1A\x82\x2C\x05\x16\x80\x01\xFB\x69\x08\x67\x8E\x20\x2E\x00\xAB\x8B\x41\x7F\x6E\x41\x14\x8A\xEE\x81\x24\x1A\x83\x2D\x0D\x16\x8F\x5A\x26\x56\x8B\x03\x0B\x2E\xA2\x8A\x1B\x22\x18\x86\x0B\xBE\x66\x8A\x5D\x05\x2B\xBF\x0D\xB0\x83\x09\xF4\x88\x0D\x3E\x77\x03\x0B\x06\x03\x7C\x2F\x0A\x05\xDF\x01\x5B\x82\x0F\x32\x02\x21\x08\x18\xA3\x81\x06\x0A\x8F\x70\x12\x8C\x09\x09\x33\x83\x8C\x0A\x29\x32\x06\x08\xD4\x06\x8A\x62\x06\x33\x97\x0F\xD3\x86\x10\x3A\x02\x63\x83\x0E\x63\x07\x32\xA5\x0E\x84\x76\x10\x20\x8F\x4D\x82\x08\x65\x02\x0B\xA6\x03\xB6\x82\xE6\x1A\x44\x6D\x83", + "\x08\x39\x07\x35\x8B\x23\x06\x71\x19\x83\x7C\x1A\x1A\x82\x69\x05\x2D\x90\x68\x4D\x44\x1C\x82\x09\x70\x83\x8D\x1B\x27\x39\x8C\x87\xC1\x7B\x06\x2A\x8C\x77\x0E\x8D\x09\x0F\x37\xB7\x12\x72\x2C\x36\x06\x09\x0F\x03\x7C\x6C\x06\x3A\xB5\x09\xEF\x89\x10\x41\x02\x70\x9C\x0E\x6D\x02\x36\x85\x0F\x88\x70\xFD\x0F\x8A\x41\x0F\x03\xF3\x87\x02\x8A\x08\xF6\x8E\x0B\xC6\x88\x1C\x13\x87\x37\x83\x3E\x8A\x84\xA3\x81\x07\x73\x86\x15\x9A\x8F\x32\x7A\x20\xB2\x03\x79\x8D\xC2\x1A\x44\x7D\x99\x84\x83\x7B\x0E\x33\x87\xBA\x66\x20\xA9\x82\x51\x94\x03\xF3\x84\x1A\x8D\x90\x61\x77\x1B\x81\x09\x1D\x13\x87\xEF\x6D\x1A\xA7\x86\xAE\x55\x21\x80\x02\x1D\x13\x87\xB3\x6B\x42\xB9\x59\xBC\x89\x10\x77\x03\x3C\x9F\x76\x22\x90\x09\x83\x7C\x3C\x0A\x05\xF9\x01\x5B\x8C\x78\x29\x93\xAC\x43\x7D\x3D\x0A\x05\xFC\x01\x5B\x84\x88\x1A\x95\xE2\x4A\x09\xB7\x16\x14\xFE\x02\x78\x8A\x08\x12\x76\x20\x16\x79\x0E\x9F\x44\x66\x8D\x42\x07\x90\xDB\x8D\x98\x1D\x78\x83\x02\x3B\x46\x8B\x1F\x1A\x82\x80\x02\x3D\x87\x0E\xD6\x19\x10\x64\x8D\x87\x82\x04\xF3\x86\x21\x9A\x44\x2A\x96\x10", + "\x30\x1C\x74\x94\x21\x18\x76\x3B\x83\x7D\x41\x03\x0F\x8C\x8A\x26\x41\x93\x03\x0E\x4B\x84\x92\x1B\x2A\x26\x83\x0A\xE8\x06\x8A\x84\x07\x47\x89\x09\x26\x96\x10\x5C\x90\x89\x8C\x24\x20\x7B\x20\x00\x1E\xA3\x85\x08\x72\x92\x41\x19\x93\x02\x0B\x77\x06\x8A\x43\x0E\x27\x83\x08\x89\x76\x1D\x83\x7F\x10\x14\x44\x3E\x8C\x11\x8A\x08\x9D\x97\x93\x03\x0A\x11\x1A\x83\x45\x0D\x16\x91\x8A\x4C\x83\x08\x2A\x70\x51\x86\x8B\x46\x0B\x28\x8E\x1F\x9E\x8C\x92\x83\x78\x12\x1A\x83\x48\x0D\x16\xED\x6D\x48\x3E\x08\x09\x0C\x7C\x06\x8B\x49\x05\x28\x82\x09\xCC\x79\x7A\x1D\x94\x12\x33\x86\x8C\x81\x08\x89\x0B\xAB\x9B\x55\x83\x7D\x12\x33\x87\x92\x87\x29\xAE\x97\x7E\x9D\x90\x96\x03\x1E\xAA\x89\x50\x5B\xDF\x0F\x7A\x40\x97\x04\xF3\x84\x26\xA1\x29\x5B\x92\x10\x1A\x86\x3E\x82\x08\x98\x03\x1E\xB9\x89\x5A\x90\xF3\x0E\x91\x87\x99\x04\xF3\x87\x27\x84\x96\x5F\x94\x21\x90\x96\x40\x1A\x04\xF3\x83\x28\xA8\x85\x6A\x94\xE0\x03\x7F\x26\x13\x87\x4F\x8B\x5C\x85\x97\xF5\x7E\x1E\x83\x08\x27\x13\x87\x4D\x8B\x5B\x81\x08\x66\x90\xD6\x03\x7D\x27\x1A\x82\x9E\x05\x2D\xB8", + "\x8A\x6A\x9B\x2E\xEE\x6B\xE0\x60\x05\x5A\x81\x14\x2D\x8A\xAC\x8A\x2E\x82\x09\x14\x0A\x08\x2A\x7D\x43\xA3\x05\x56\x91\x10\x30\x71\x42\x07\x98\x5F\x93\x98\x2A\x94\x72\x9B\x26\x94\x20\xFE\x06\x08\x52\x26\x28\xA4\x04\x86\x93\xF3\x6D\x8E\x40\x85\x05\xF3\x87\x30\x85\x99\x80\x06\x41\x5F\x59\x87\x86\x05\xF3\x87\x2B\xB2\x97\x8E\x93\xF7\x46\x8B\x29\x13\x87\x71\x8B\x65\xA5\x99\xB3\x72\x10\xA8\x07\x3C\x80\x8C\xFC\x92\x20\x33\x98\x04\x96\x14\xA9\x07\x3C\x85\x8C\x32\x9E\x5A\x9E\x97\x80\x0A\x0A\x73\x84\x63\x81\x9A\xDD\x91\x49\x89\x09\x55\x03\x0F\x90\x8D\xCE\x84\x99\x1C\x93\x68\x80\x00\x56\x03\x0F\x9B\x8F\xC8\x8C\x99\xEC\x55\x43\xAD\x05\x79\x82\x1A\xD7\x9B\xCE\x82\x08\x10\x6A\x20\xAE\x04\x2D\x8F\x0A\x6D\x8A\x6D\x88\x9A\xFE\x96\x28\xB1\x04\x2D\x82\x0B\x6D\x89\x69\x8B\x99\x38\x7E\x20\x06\x20\xA3\x84\x0B\x1C\x99\x0E\x29\x08\x71\x9A\x6A\x8F\x23\x8C\x96\x10\x5F\x9B\x41\x8C\x24\x6A\x26\x20\x3C\x22\xA3\x85\x0B\x1C\x9B\xE0\x86\x08\x47\x7D\x62\x87\x0E\x5B\x02\x25\xBF\x0F\x21\x29\x95\x83\x78\x17\x33\x86\xA0\x11\x52\x0F\x9C\xC6\x83\x7C", + "\xB9\x03\x1E\xAC\x8D\x95\x96\x39\x83\x08\xD0\x6A\x9C\x34\x22\xC7\x57\x9C\xA3\x8A\x0B\x73\x86\x76\x9D\x95\x01\x0A\x74\x9E\x9D\xF3\x8C\x38\x44\x73\xEA\x91\x98\x4B\x27\x73\x83\x08\x3D\x26\x14\xBB\x04\xC7\x89\x9C\x03\x0D\x73\x8A\x9A\x46\x20\x4D\x06\x09\xD2\x7D\x90\xBC\x04\x63\xAB\x26\x8F\x9F\x2C\x81\x09\x2F\x13\x87\xCD\x88\x75\x80\x01\xE1\x95\x1F\x9D\x92\x2F\x13\x87\xD2\x8B\x65\x8C\x9F\xC0\x76\x14\xBF\x07\x3C\x98\x8E\x57\x9B\x7A\xA3\x76\xA9\x90\x0C\x73\x85\x77\x92\x9E\xD1\x83\xF0\x41\x07\x79\x8C\x23\xD9\x9E\xD0\x9B\x9D\x03\x0A\x18\x33\x86\x2B\x90\x3E\xC9\x9B\xDF\x83\x08\xC3\x03\x1E\x88\x92\xE5\x9A\x3D\x81\x0B\x2C\x99\x48\xC4\x03\x1E\x83\x93\xF6\x93\x22\xE8\x9E\x40\x05\x06\xF3\x81\x48\xBC\x9E\x15\x96\x14\xC6\x06\x16\x87\x06\x6D\x8E\x48\xA6\x9E\xB6\x66\x14\xC9\x06\x16\x8A\x06\x6D\x8B\x49\xAB\x99\x83\x29\x10\x67\x26\x51\x8C\x06\x1C\x99\xC9\x46\x08\x0A\xA0\x3A\xC3\x27\xEF\x83\x08\xF5\x9D\x5D\x93\x26\xA8\x73\x10\x28\x2A\x51\x8D\x06\x1C\x9E\x84\x86\x09\xA9\x7D\x41\xD7\x0E\x33\x0D\x9C\xC3\x0B\xA7\x09\x09\x0F\xAE\x3F\x81", + "\x08\x34\x13\x87\x6F\x97\x6A\xB2\xA0\x83\x06\x55\x30\x9D\x1B\x2E\x72\x3C\xA4\x75\x8E\x1D\x1E\xA6\x10\x23\x2A\x51\x91\x06\x1C\x9C\x85\x83\x09\x1D\xAA\x37\xB6\x20\xD6\x63\x08\x2A\x9D\x86\x80\x00\x69\x00\x43\xD7\x0E\x9D\x8F\x9A\x00\x07\x89\x82\x09\xCD\x92\x45\xD4\x05\x15\xBC\x0E\x68\x90\x8B\x9A\xA3\x80\x0F\x29\xD2\x9A\x35\x1F\xA2\x35\x0D\x4D\xA2\xA2\x85\x02\x28\x9D\x90\x36\x08\xA3\x8E\x91\x2C\x23\xA2\x00\x07\x38\xD2\x9A\x36\x10\xA3\x09\x08\x50\x8A\x9F\x39\xAA\x42\xD2\x98\x37\x18\xA3\x9A\x97\x6A\x93\x72\x83\x08\x58\x46\x8A\x37\x00\xA4\x6C\x17\xEB\x43\x09\x42\xAD\x21\xE0\x04\x22\xB7\x13\x5F\x74\x90\x83\x7C\x71\x0F\x48\xFA\x13\x96\x72\xA4\x46\x8C\x1C\x15\xA5\x3D\x17\xE5\x18\xA5\x87\x86\x07\x9B\xA2\x3C\x38\x2C\x83\x01\x45\xEF\x9E\x40\x08\x07\x9D\x94\x40\x07\x95\xAC\x93\x10\x23\xA7\x40\x1C\xA2\xA6\xA1\x20\x2B\x07\x54\xAD\x24\x19\x94\x2B\xA2\x08\xAE\xA2\x20\x25\xA2\x29\xAE\x0E\x34\xA4\x9B\x08\x95\xFD\x99\x20\x39\xA5\x80\x0D\x46\xD2\x99\x3C\x1E\xA5\x77\x14\x5E\x85\x77\x94\x0A\x10\x75\xA2\x14\xB4\x07\xC8\xA2\x4F\x0E\x99", + "\x60\xAE\x21\x8A\x09\x1F\xB2\xA2\xF7\x01\x9A\xBB\x13\x8B\x97\x4B\xC2\xA6\x42\x14\x95\xB1\xA0\x00\x3A\x07\x4D\xAE\x37\xB9\x92\x40\x18\x73\x50\xA3\xF0\x7C\x07\x4D\xA9\x37\xDB\x67\x9D\x6A\x08\xB0\xA2\x84\xA2\x81\x4D\xAC\x37\xDD\xA4\x00\x08\xA7\xBA\xA3\xF0\x4B\xA6\x6A\xA2\x1E\x34\x9C\x35\xB8\xA7\xC4\xA3\xF0\x42\x00\x54\x4A\x0B\x89\x0A\xEE\x81\x08\x6D\x75\x99\x83\x7C\x02\x04\x50\xF2\x12\xEB\x8E\xA7\x09\x08\xA0\x80\x01\x6B\xA1\x4E\x86\x01\x43\xA4\x10\xB8\x98\xA2\x86\x08\x89\xA0\x4E\xF2\xA4\xBC\x41\x71\xE2\x0E\x82\x97\x9A\xB3\x73\x10\x3E\x2E\x51\x89\x00\x20\xAC\x5F\x21\x2E\x52\xA3\xF8\x0A\x00\x2A\x4D\x68\x35\x09\x84\xB7\x5D\x95\xAF\x4A\x83\x7E\x03\x0F\xA9\x72\x14\x86\x8B\x5B\x95\x0A\x10\x3B\xA5\x38\xB2\x00\x38\xAC\x40\x14\xA8\x00\x03\x53\xEC\xA3\xE0\x76\x00\x41\xAD\x49\x04\xA3\x81\x05\x54\x89\x0A\x33\xA1\xA7\x1A\x01\xA9\xAC\x12\x46\xAC\x54\xBC\xA9\x42\x03\xAA\x02\x8E\x03\x12\xAA\x48\xAB\x2B\x34\xAA\x44\x83\x7C\x22\x00\x15\x4C\x95\x56\xAA\x9E\x7D\x72\x41\x03\x2F\x46\x8D\x04\x29\xA8\x7B\x16\x56\xE9\xA6\x51\x86\x01\x62", + "\xAA\x4E\x12\xA9\xDB\x5D\x56\xDB\xA3\xE0\x69\x01\x71\xAC\x40\x28\xAA\x58\x93\x10\x75\xA8\x19\xA3\x7C\x2C\x01\xAF\x8D\x13\xF4\x2D\x1E\xFE\xA8\x00\x05\xA6\x52\xA7\x05\x02\xAC\x36\x1F\x5E\x05\xAE\x42\xA6\x8A\x32\x03\xB1\xB6\x2F\x5D\x16\x58\xD8\xA9\xF1\x80\x00\x35\x02\xB2\xBA\x12\xBB\x7C\x57\x82\x0A\x61\xBD\xA8\x02\x88\x07\x17\xA9\x26\x1D\xF7\x54\xA7\xA1\x63\x08\x7B\xAA\x6A\xBA\x01\xB5\xA8\x2F\x27\xAE\x40\x05\xA5\x1E\xAB\x07\x1A\xAD\x3D\x12\x64\x6D\x8E\x6B\xA1\x08\xF1\xA2\x20\xBE\x01\xD9\xA2\x1E\x59\x32\x6D\xBD\xA9\x83\x79\x08\x3C\xAD\xF2\x0D\x67\x3F\xAD\x42\x08\xAC\xE1\xA4\x08\x03\xAF\xE2\x04\x6A\x46\xAE\xE0\x83\x7C\x47\x03\xB9\x87\x0F\xC6\x7D\x59\x81\x0B\x6D\xB3\xA8\x83\x7A\x09\x12\xAF\xDF\x00\x6B\x4E\xAF\x40\x00\xAD\x97\xAD\x09\x23\xAC\x36\x1F\xF8\x54\xA4\x61\xA6\x5E\xF9\x75\x24\x7E\x75\x47\x77\x0A\x99\x48\x62\x4E\x0A\xB7\x5E\x29\x2C\x44\xA7\x0C\xE8\x0F\x7A\x53\x12\x62\x4E\x0C\xD8\x79\xAF\x97\x6A\x5F\xA3\x74\x7F\xAF\x69\x13\x4E\x29\x3F\x54\xA7\x08\xCF\x04\xB3\x4B\x6F\x58\x4E\x08\xC1\xB5\x08\x05\xB9\xD4\x19\x49", + "\x81\xAB\xB0\x35\x0E\xEA\x40\x79\xDC\x59\xE9\x6C\x0E\xB1\x6F\x64\x3C\x4B\xBE\x90\x76\x97\x6A\x61\xEA\x4E\x7C\xAF\x69\x8E\x74\x8C\x71\xAF\x4F\x7F\xD2\x30\xA8\x48\x78\xAF\xAA\x76\xA5\x68\xB1\xF3\x90\x8C\x2B\xB1\xB9\x86\x0C\xF7\x57\x25\x4E\x0A\x19\xB3\xEB\x06\x0D\x24\x93\x09\xAD\x5E\x29\x39\xB1\x1A\xBC\x93\x3B\xB2\x7D\xB7\x74\xEC\x09\x53\x6F\xAE\x20\xBE\xD2\x43\xB3\xAF\x8E\xAF\x2F\x6B\xD2\x7D\x55\x85\x4E\x14\x4C\xB3\x7A\xBC\x49\x4E\xB4\x9A\x51\x0F\x55\x8C\x9B\x0B\x44\x32\x92\xB2\x19\x49\xC0\xBE\xAE\xC3\x0E\x2C\xBD\x09\x7F\xA1\x9F\x2E\x6F\xCB\x9A\x69\x97\x60\x01\xB8\x09\x99\xB3\x09\x03\xB5\x26\x29\xB3\x06\xB1\x91\x6B\xB1\x55\x69\x0F\x0C\x86\x28\x0F\xB1\xAC\x6E\x60\xAF\x6B\x9C\xAF\xB3\x11\x4F\xCE\xB6\x5F\xF4\x07\xFE\x32\x08\x83\xA1\x61\x19\x4F\xCF\xBB\xB3\x88\x44\x01\xC9\x09\xA1\xBD\x09\x62\x76\x29\x09\xB5\x9A\x0B\x68\xE3\x5E\x4B\x6D\xB4\xF7\x0C\x3D\x21\x9A\xA3\x00\xD1\x4E\x08\x44\x78\xAF\xD3\x72\xDA\x5E\xB1\xE5\x88\xEC\x6C\x0E\x32\x9D\x09\x66\x6E\x29\x21\xB5\x9A\x09\x0F\xC0\x09\xA9\xBA\x09\x55\x56\x29\x29\xB5\x97", + "\x60", }; vl::glr::DecompressSerializedData(compressed, true, dataSolidRows, dataRows, dataBlock, dataRemain, outputStream); } @@ -11905,7 +12293,10 @@ namespace vl::presentation::remoteprotocol L"RAttribute", L"REnumMember", L"REnum", + L"RUnionMember", + L"RUnion", L"RStructMember", + L"RStructBody", L"RStruct", L"RMessageRequest", L"RMessageResponse", @@ -11924,103 +12315,130 @@ namespace vl::presentation::remoteprotocol static const wchar_t* results[] = { L"[0][RType] BEGIN ", L"[1][RType] END [ENDING]", - L"[2][RType]< \"bool\" @ >", - L"[3][RType]< \"char\" @ >", - L"[4][RType]< \"color\" @ >", - L"[5][RType]< \"double\" @ >", - L"[6][RType]< \"float\" @ >", - L"[7][RType]< \"int\" @ >", - L"[8][RType]< \"key\" @ >", - L"[9][RType]< \"string\" @ >", - L"[10][RType]< NAME @ >", - L"[11][RType]< RType \"?\" @ >", - L"[12][RType]< RType \"[\" \"]\" @ >", - L"[13][RType]< RType \"[\" @ \"]\" >", - L"[14][RType]< RType @ \"?\" >", - L"[15][RType]< RType @ \"[\" \"]\" >", - L"[16][RAttributeParameter] BEGIN ", - L"[17][RAttributeParameter] END [ENDING]", - L"[18][RAttributeParameter]CPP_NAME @", - L"[19][RAttribute] BEGIN ", - L"[20][RAttribute] END [ENDING]", - L"[21][RAttribute]< \"[\" @ ATT_NAME [ \"(\" RAttributeParameter \")\" ] \"]\" >", - L"[22][RAttribute]< \"[\" ATT_NAME @ [ \"(\" RAttributeParameter \")\" ] \"]\" >", - L"[23][RAttribute]< \"[\" ATT_NAME [ \"(\" @ RAttributeParameter \")\" ] \"]\" >", - L"[24][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter \")\" @ ] \"]\" >", - L"[25][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter \")\" ] \"]\" @ >", - L"[26][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter @ \")\" ] \"]\" >", - L"[27][REnumMember] BEGIN ", - L"[28][REnumMember] END [ENDING]", - L"[29][REnumMember]< NAME \",\" @ >", - L"[30][REnumMember]< NAME @ \",\" >", - L"[31][REnum] BEGIN ", - L"[32][REnum] END [ENDING]", - L"[33][REnum]< \"enum\" @ NAME \"{\" { REnumMember } \"}\" >", - L"[34][REnum]< \"enum\" NAME \"{\" @ { REnumMember } \"}\" >", - L"[35][REnum]< \"enum\" NAME \"{\" { REnumMember @ } \"}\" >", - L"[36][REnum]< \"enum\" NAME \"{\" { REnumMember } \"}\" @ >", - L"[37][REnum]< \"enum\" NAME @ \"{\" { REnumMember } \"}\" >", - L"[38][RStructMember] BEGIN ", - L"[39][RStructMember] END [ENDING]", - L"[40][RStructMember]< \"var\" @ NAME \":\" RType \";\" >", - L"[41][RStructMember]< \"var\" NAME \":\" @ RType \";\" >", - L"[42][RStructMember]< \"var\" NAME \":\" RType \";\" @ >", - L"[43][RStructMember]< \"var\" NAME \":\" RType @ \";\" >", - L"[44][RStructMember]< \"var\" NAME @ \":\" RType \";\" >", - L"[45][RStruct] BEGIN ", - L"[46][RStruct] END [ENDING]", - L"[47][RStruct]< \"struct\" @ NAME \"{\" { RStructMember } \"}\" >", - L"[48][RStruct]< \"struct\" NAME \"{\" @ { RStructMember } \"}\" >", - L"[49][RStruct]< \"struct\" NAME \"{\" { RStructMember @ } \"}\" >", - L"[50][RStruct]< \"struct\" NAME \"{\" { RStructMember } \"}\" @ >", - L"[51][RStruct]< \"struct\" NAME @ \"{\" { RStructMember } \"}\" >", - L"[52][RMessageRequest] BEGIN ", - L"[53][RMessageRequest] END [ENDING]", - L"[54][RMessageRequest]< \"request\" \":\" @ RType \";\" >", - L"[55][RMessageRequest]< \"request\" \":\" RType \";\" @ >", - L"[56][RMessageRequest]< \"request\" \":\" RType @ \";\" >", - L"[57][RMessageRequest]< \"request\" @ \":\" RType \";\" >", - L"[58][RMessageResponse] BEGIN ", - L"[59][RMessageResponse] END [ENDING]", - L"[60][RMessageResponse]< \"response\" \":\" @ RType \";\" >", - L"[61][RMessageResponse]< \"response\" \":\" RType \";\" @ >", - L"[62][RMessageResponse]< \"response\" \":\" RType @ \";\" >", - L"[63][RMessageResponse]< \"response\" @ \":\" RType \";\" >", - L"[64][RMessage] BEGIN ", - L"[65][RMessage] END [ENDING]", - L"[66][RMessage]< \"message\" @ NAME \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" >", - L"[67][RMessage]< \"message\" NAME \"{\" @ [ RMessageRequest ] [ RMessageResponse ] \"}\" >", - L"[68][RMessage]< \"message\" NAME \"{\" [ RMessageRequest @ ] [ RMessageResponse ] \"}\" >", - L"[69][RMessage]< \"message\" NAME \"{\" [ RMessageRequest ] [ RMessageResponse @ ] \"}\" >", - L"[70][RMessage]< \"message\" NAME \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" @ >", - L"[71][RMessage]< \"message\" NAME @ \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" >", - L"[72][REventRequest] BEGIN ", - L"[73][REventRequest] END [ENDING]", - L"[74][REventRequest]< \"request\" \":\" @ RType \";\" >", - L"[75][REventRequest]< \"request\" \":\" RType \";\" @ >", - L"[76][REventRequest]< \"request\" \":\" RType @ \";\" >", - L"[77][REventRequest]< \"request\" @ \":\" RType \";\" >", - L"[78][REvent] BEGIN ", - L"[79][REvent] END [ENDING]", - L"[80][REvent]< \"event\" @ NAME \"{\" [ REventRequest ] \"}\" >", - L"[81][REvent]< \"event\" NAME \"{\" @ [ REventRequest ] \"}\" >", - L"[82][REvent]< \"event\" NAME \"{\" [ REventRequest @ ] \"}\" >", - L"[83][REvent]< \"event\" NAME \"{\" [ REventRequest ] \"}\" @ >", - L"[84][REvent]< \"event\" NAME @ \"{\" [ REventRequest ] \"}\" >", - L"[85][RDeclDetail] BEGIN ", - L"[86][RDeclDetail] END [ENDING]", - L"[87][RDeclDetail]<< !REnum @ >>", - L"[88][RDeclDetail]<< !REvent @ >>", - L"[89][RDeclDetail]<< !RMessage @ >>", - L"[90][RDeclDetail]<< !RStruct @ >>", - L"[91][RDecl] BEGIN ", - L"[92][RDecl] END [ENDING]", - L"[93][RDecl]<< { RAttribute @ } !RDeclDetail >>", - L"[94][RDecl]<< { RAttribute } !RDeclDetail @ >>", - L"[95][Schema] BEGIN ", - L"[96][Schema] END [ENDING]", - L"[97][Schema]< RDecl @ { RDecl } >", - L"[98][Schema]< RDecl { RDecl @ } >", + L"[2][RType]< \"binary\" @ >", + L"[3][RType]< \"bool\" @ >", + L"[4][RType]< \"char\" @ >", + L"[5][RType]< \"color\" @ >", + L"[6][RType]< \"double\" @ >", + L"[7][RType]< \"float\" @ >", + L"[8][RType]< \"int\" @ >", + L"[9][RType]< \"key\" @ >", + L"[10][RType]< \"string\" @ >", + L"[11][RType]< NAME \"[\" \".\" @ NAME \"]\" >", + L"[12][RType]< NAME \"[\" \".\" NAME \"]\" @ >", + L"[13][RType]< NAME \"[\" \".\" NAME @ \"]\" >", + L"[14][RType]< NAME \"[\" @ \".\" NAME \"]\" >", + L"[15][RType]< NAME @ \"[\" \".\" NAME \"]\" >", + L"[16][RType]< NAME @ >", + L"[17][RType]< RType \"?\" @ >", + L"[18][RType]< RType \"[\" \"]\" @ >", + L"[19][RType]< RType \"[\" @ \"]\" >", + L"[20][RType]< RType \"[\" @ RType \"]\" >", + L"[21][RType]< RType \"[\" RType \"]\" @ >", + L"[22][RType]< RType \"[\" RType @ \"]\" >", + L"[23][RType]< RType @ \"?\" >", + L"[24][RType]< RType @ \"[\" \"]\" >", + L"[25][RType]< RType @ \"[\" RType \"]\" >", + L"[26][RAttributeParameter] BEGIN ", + L"[27][RAttributeParameter] END [ENDING]", + L"[28][RAttributeParameter]CPP_NAME @", + L"[29][RAttribute] BEGIN ", + L"[30][RAttribute] END [ENDING]", + L"[31][RAttribute]< \"[\" @ ATT_NAME [ \"(\" RAttributeParameter \")\" ] \"]\" >", + L"[32][RAttribute]< \"[\" ATT_NAME @ [ \"(\" RAttributeParameter \")\" ] \"]\" >", + L"[33][RAttribute]< \"[\" ATT_NAME [ \"(\" @ RAttributeParameter \")\" ] \"]\" >", + L"[34][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter \")\" @ ] \"]\" >", + L"[35][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter \")\" ] \"]\" @ >", + L"[36][RAttribute]< \"[\" ATT_NAME [ \"(\" RAttributeParameter @ \")\" ] \"]\" >", + L"[37][REnumMember] BEGIN ", + L"[38][REnumMember] END [ENDING]", + L"[39][REnumMember]< NAME \",\" @ >", + L"[40][REnumMember]< NAME @ \",\" >", + L"[41][REnum] BEGIN ", + L"[42][REnum] END [ENDING]", + L"[43][REnum]< \"enum\" @ NAME \"{\" { REnumMember } \"}\" >", + L"[44][REnum]< \"enum\" NAME \"{\" @ { REnumMember } \"}\" >", + L"[45][REnum]< \"enum\" NAME \"{\" { REnumMember @ } \"}\" >", + L"[46][REnum]< \"enum\" NAME \"{\" { REnumMember } \"}\" @ >", + L"[47][REnum]< \"enum\" NAME @ \"{\" { REnumMember } \"}\" >", + L"[48][RUnionMember] BEGIN ", + L"[49][RUnionMember] END [ENDING]", + L"[50][RUnionMember]< NAME \",\" @ >", + L"[51][RUnionMember]< NAME @ \",\" >", + L"[52][RUnion] BEGIN ", + L"[53][RUnion] END [ENDING]", + L"[54][RUnion]< \"union\" @ NAME \"{\" { RUnionMember } \"}\" >", + L"[55][RUnion]< \"union\" NAME \"{\" @ { RUnionMember } \"}\" >", + L"[56][RUnion]< \"union\" NAME \"{\" { RUnionMember @ } \"}\" >", + L"[57][RUnion]< \"union\" NAME \"{\" { RUnionMember } \"}\" @ >", + L"[58][RUnion]< \"union\" NAME @ \"{\" { RUnionMember } \"}\" >", + L"[59][RStructMember] BEGIN ", + L"[60][RStructMember] END [ENDING]", + L"[61][RStructMember]< \"var\" @ NAME \":\" RType \";\" >", + L"[62][RStructMember]< \"var\" NAME \":\" @ RType \";\" >", + L"[63][RStructMember]< \"var\" NAME \":\" RType \";\" @ >", + L"[64][RStructMember]< \"var\" NAME \":\" RType @ \";\" >", + L"[65][RStructMember]< \"var\" NAME @ \":\" RType \";\" >", + L"[66][RStructBody] BEGIN ", + L"[67][RStructBody] END [ENDING]", + L"[68][RStructBody]< NAME \"{\" @ { RStructMember } \"}\" >", + L"[69][RStructBody]< NAME \"{\" { RStructMember @ } \"}\" >", + L"[70][RStructBody]< NAME \"{\" { RStructMember } \"}\" @ >", + L"[71][RStructBody]< NAME @ \"{\" { RStructMember } \"}\" >", + L"[72][RStruct] BEGIN ", + L"[73][RStruct] END [ENDING]", + L"[74][RStruct]<< \"class\" !RStructBody @ >>", + L"[75][RStruct]<< \"class\" @ !RStructBody >>", + L"[76][RStruct]<< \"struct\" !RStructBody @ >>", + L"[77][RStruct]<< \"struct\" @ !RStructBody >>", + L"[78][RMessageRequest] BEGIN ", + L"[79][RMessageRequest] END [ENDING]", + L"[80][RMessageRequest]< \"request\" \":\" @ RType \";\" >", + L"[81][RMessageRequest]< \"request\" \":\" RType \";\" @ >", + L"[82][RMessageRequest]< \"request\" \":\" RType @ \";\" >", + L"[83][RMessageRequest]< \"request\" @ \":\" RType \";\" >", + L"[84][RMessageResponse] BEGIN ", + L"[85][RMessageResponse] END [ENDING]", + L"[86][RMessageResponse]< \"response\" \":\" @ RType \";\" >", + L"[87][RMessageResponse]< \"response\" \":\" RType \";\" @ >", + L"[88][RMessageResponse]< \"response\" \":\" RType @ \";\" >", + L"[89][RMessageResponse]< \"response\" @ \":\" RType \";\" >", + L"[90][RMessage] BEGIN ", + L"[91][RMessage] END [ENDING]", + L"[92][RMessage]< \"message\" @ NAME \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" >", + L"[93][RMessage]< \"message\" NAME \"{\" @ [ RMessageRequest ] [ RMessageResponse ] \"}\" >", + L"[94][RMessage]< \"message\" NAME \"{\" [ RMessageRequest @ ] [ RMessageResponse ] \"}\" >", + L"[95][RMessage]< \"message\" NAME \"{\" [ RMessageRequest ] [ RMessageResponse @ ] \"}\" >", + L"[96][RMessage]< \"message\" NAME \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" @ >", + L"[97][RMessage]< \"message\" NAME @ \"{\" [ RMessageRequest ] [ RMessageResponse ] \"}\" >", + L"[98][REventRequest] BEGIN ", + L"[99][REventRequest] END [ENDING]", + L"[100][REventRequest]< \"request\" \":\" @ RType \";\" >", + L"[101][REventRequest]< \"request\" \":\" RType \";\" @ >", + L"[102][REventRequest]< \"request\" \":\" RType @ \";\" >", + L"[103][REventRequest]< \"request\" @ \":\" RType \";\" >", + L"[104][REvent] BEGIN ", + L"[105][REvent] END [ENDING]", + L"[106][REvent]< \"event\" @ NAME \"{\" [ REventRequest ] \"}\" >", + L"[107][REvent]< \"event\" NAME \"{\" @ [ REventRequest ] \"}\" >", + L"[108][REvent]< \"event\" NAME \"{\" [ REventRequest @ ] \"}\" >", + L"[109][REvent]< \"event\" NAME \"{\" [ REventRequest ] \"}\" @ >", + L"[110][REvent]< \"event\" NAME @ \"{\" [ REventRequest ] \"}\" >", + L"[111][RDeclDetail] BEGIN ", + L"[112][RDeclDetail] END [ENDING]", + L"[113][RDeclDetail]<< !REnum @ >>", + L"[114][RDeclDetail]<< !REvent @ >>", + L"[115][RDeclDetail]<< !RMessage @ >>", + L"[116][RDeclDetail]<< !RStruct @ >>", + L"[117][RDeclDetail]<< !RUnion @ >>", + L"[118][RDecl] BEGIN ", + L"[119][RDecl] END [ENDING]", + L"[120][RDecl]<< { RAttribute @ } !RDeclDetail >>", + L"[121][RDecl]<< { RAttribute } !RDeclDetail @ >>", + L"[122][Schema] BEGIN ", + L"[123][Schema] END [ENDING]", + L"[124][Schema]< RDecl @ { RDecl } >", + L"[125][Schema]< RDecl { RDecl @ } >", }; return results[index]; } @@ -12074,6 +12492,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase auto cppTypeName = GuiRemoteProtocolCppTypeName((GuiRemoteProtocolClasses)type); switch((GuiRemoteProtocolClasses)type) { + case GuiRemoteProtocolClasses::ArrayMapType: + return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpArrayMapType); case GuiRemoteProtocolClasses::ArrayType: return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpArrayType); case GuiRemoteProtocolClasses::Attribute: @@ -12086,6 +12506,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpEventDecl); case GuiRemoteProtocolClasses::EventRequest: return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpEventRequest); + case GuiRemoteProtocolClasses::MapType: + return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpMapType); case GuiRemoteProtocolClasses::MessageDecl: return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpMessageDecl); case GuiRemoteProtocolClasses::MessageRequest: @@ -12104,6 +12526,10 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpStructDecl); case GuiRemoteProtocolClasses::StructMember: return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpStructMember); + case GuiRemoteProtocolClasses::UnionDecl: + return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpUnionDecl); + case GuiRemoteProtocolClasses::UnionMember: + return vl::Ptr(new vl::presentation::remoteprotocol::GuiRpUnionMember); default: return vl::glr::AssemblyThrowCannotCreateAbstractType(type, cppTypeName); } @@ -12124,6 +12550,10 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpEventDecl::request, object, field, value, cppFieldName); case GuiRemoteProtocolFields::EventRequest_type: return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpEventRequest::type, object, field, value, cppFieldName); + case GuiRemoteProtocolFields::MapType_element: + return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpMapType::element, object, field, value, cppFieldName); + case GuiRemoteProtocolFields::MapType_keyType: + return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpMapType::keyType, object, field, value, cppFieldName); case GuiRemoteProtocolFields::MessageDecl_request: return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpMessageDecl::request, object, field, value, cppFieldName); case GuiRemoteProtocolFields::MessageDecl_response: @@ -12140,6 +12570,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpStructDecl::members, object, field, value, cppFieldName); case GuiRemoteProtocolFields::StructMember_type: return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpStructMember::type, object, field, value, cppFieldName); + case GuiRemoteProtocolFields::UnionDecl_members: + return vl::glr::AssemblerSetObjectField(&vl::presentation::remoteprotocol::GuiRpUnionDecl::members, object, field, value, cppFieldName); default: return vl::glr::AssemblyThrowFieldNotObject(field, cppFieldName); } @@ -12150,6 +12582,10 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase auto cppFieldName = GuiRemoteProtocolCppFieldName((GuiRemoteProtocolFields)field); switch((GuiRemoteProtocolFields)field) { + case GuiRemoteProtocolFields::ArrayMapType_element: + return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpArrayMapType::element, object, field, token, tokenIndex, cppFieldName); + case GuiRemoteProtocolFields::ArrayMapType_keyField: + return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpArrayMapType::keyField, object, field, token, tokenIndex, cppFieldName); case GuiRemoteProtocolFields::Attribute_cppType: return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpAttribute::cppType, object, field, token, tokenIndex, cppFieldName); case GuiRemoteProtocolFields::Attribute_name: @@ -12162,6 +12598,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpReferenceType::name, object, field, token, tokenIndex, cppFieldName); case GuiRemoteProtocolFields::StructMember_name: return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpStructMember::name, object, field, token, tokenIndex, cppFieldName); + case GuiRemoteProtocolFields::UnionMember_name: + return vl::glr::AssemblerSetTokenField(&vl::presentation::remoteprotocol::GuiRpUnionMember::name, object, field, token, tokenIndex, cppFieldName); default: return vl::glr::AssemblyThrowFieldNotToken(field, cppFieldName); } @@ -12174,6 +12612,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase { case GuiRemoteProtocolFields::PrimitiveType_type: return vl::glr::AssemblerSetEnumField(&vl::presentation::remoteprotocol::GuiRpPrimitiveType::type, object, field, enumItem, weakAssignment, cppFieldName); + case GuiRemoteProtocolFields::StructDecl_type: + return vl::glr::AssemblerSetEnumField(&vl::presentation::remoteprotocol::GuiRpStructDecl::type, object, field, enumItem, weakAssignment, cppFieldName); default: return vl::glr::AssemblyThrowFieldNotEnum(field, cppFieldName); } @@ -12182,6 +12622,7 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase const wchar_t* GuiRemoteProtocolTypeName(GuiRemoteProtocolClasses type) { const wchar_t* results[] = { + L"ArrayMapType", L"ArrayType", L"Attribute", L"Declaration", @@ -12189,6 +12630,7 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"EnumMember", L"EventDecl", L"EventRequest", + L"MapType", L"MessageDecl", L"MessageRequest", L"MessageResponse", @@ -12199,14 +12641,17 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"StructDecl", L"StructMember", L"Type", + L"UnionDecl", + L"UnionMember", }; vl::vint index = (vl::vint)type; - return 0 <= index && index < 17 ? results[index] : nullptr; + return 0 <= index && index < 21 ? results[index] : nullptr; } const wchar_t* GuiRemoteProtocolCppTypeName(GuiRemoteProtocolClasses type) { const wchar_t* results[] = { + L"vl::presentation::remoteprotocol::GuiRpArrayMapType", L"vl::presentation::remoteprotocol::GuiRpArrayType", L"vl::presentation::remoteprotocol::GuiRpAttribute", L"vl::presentation::remoteprotocol::GuiRpDeclaration", @@ -12214,6 +12659,7 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"vl::presentation::remoteprotocol::GuiRpEnumMember", L"vl::presentation::remoteprotocol::GuiRpEventDecl", L"vl::presentation::remoteprotocol::GuiRpEventRequest", + L"vl::presentation::remoteprotocol::GuiRpMapType", L"vl::presentation::remoteprotocol::GuiRpMessageDecl", L"vl::presentation::remoteprotocol::GuiRpMessageRequest", L"vl::presentation::remoteprotocol::GuiRpMessageResponse", @@ -12224,14 +12670,18 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"vl::presentation::remoteprotocol::GuiRpStructDecl", L"vl::presentation::remoteprotocol::GuiRpStructMember", L"vl::presentation::remoteprotocol::GuiRpType", + L"vl::presentation::remoteprotocol::GuiRpUnionDecl", + L"vl::presentation::remoteprotocol::GuiRpUnionMember", }; vl::vint index = (vl::vint)type; - return 0 <= index && index < 17 ? results[index] : nullptr; + return 0 <= index && index < 21 ? results[index] : nullptr; } const wchar_t* GuiRemoteProtocolFieldName(GuiRemoteProtocolFields field) { const wchar_t* results[] = { + L"ArrayMapType::element", + L"ArrayMapType::keyField", L"ArrayType::element", L"Attribute::cppType", L"Attribute::name", @@ -12241,6 +12691,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"EnumMember::name", L"EventDecl::request", L"EventRequest::type", + L"MapType::element", + L"MapType::keyType", L"MessageDecl::request", L"MessageDecl::response", L"MessageRequest::type", @@ -12250,16 +12702,21 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"ReferenceType::name", L"Schema::declarations", L"StructDecl::members", + L"StructDecl::type", L"StructMember::name", L"StructMember::type", + L"UnionDecl::members", + L"UnionMember::name", }; vl::vint index = (vl::vint)field; - return 0 <= index && index < 20 ? results[index] : nullptr; + return 0 <= index && index < 27 ? results[index] : nullptr; } const wchar_t* GuiRemoteProtocolCppFieldName(GuiRemoteProtocolFields field) { const wchar_t* results[] = { + L"vl::presentation::remoteprotocol::GuiRpArrayMapType::element", + L"vl::presentation::remoteprotocol::GuiRpArrayMapType::keyField", L"vl::presentation::remoteprotocol::GuiRpArrayType::element", L"vl::presentation::remoteprotocol::GuiRpAttribute::cppType", L"vl::presentation::remoteprotocol::GuiRpAttribute::name", @@ -12269,6 +12726,8 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"vl::presentation::remoteprotocol::GuiRpEnumMember::name", L"vl::presentation::remoteprotocol::GuiRpEventDecl::request", L"vl::presentation::remoteprotocol::GuiRpEventRequest::type", + L"vl::presentation::remoteprotocol::GuiRpMapType::element", + L"vl::presentation::remoteprotocol::GuiRpMapType::keyType", L"vl::presentation::remoteprotocol::GuiRpMessageDecl::request", L"vl::presentation::remoteprotocol::GuiRpMessageDecl::response", L"vl::presentation::remoteprotocol::GuiRpMessageRequest::type", @@ -12278,11 +12737,14 @@ GuiRemoteProtocolAstInsReceiver : public vl::glr::AstInsReceiverBase L"vl::presentation::remoteprotocol::GuiRpReferenceType::name", L"vl::presentation::remoteprotocol::GuiRpSchema::declarations", L"vl::presentation::remoteprotocol::GuiRpStructDecl::members", + L"vl::presentation::remoteprotocol::GuiRpStructDecl::type", L"vl::presentation::remoteprotocol::GuiRpStructMember::name", L"vl::presentation::remoteprotocol::GuiRpStructMember::type", + L"vl::presentation::remoteprotocol::GuiRpUnionDecl::members", + L"vl::presentation::remoteprotocol::GuiRpUnionMember::name", }; vl::vint index = (vl::vint)field; - return 0 <= index && index < 20 ? results[index] : nullptr; + return 0 <= index && index < 27 ? results[index] : nullptr; } vl::Ptr GuiRemoteProtocolAstInsReceiver::ResolveAmbiguity(vl::vint32_t type, vl::collections::Array>& candidates) @@ -12321,7 +12783,9 @@ namespace vl::presentation::remoteprotocol static const wchar_t* results[] = { L"VAR", L"ENUM", + L"UNION", L"STRUCT", + L"CLASS", L"MESSAGE", L"REQUEST", L"RESPONSE", @@ -12334,6 +12798,7 @@ namespace vl::presentation::remoteprotocol L"CHAR", L"KEY", L"COLOR", + L"BINARY", L"CPP_NAME", L"ATT_NAME", L"NAME", @@ -12346,6 +12811,7 @@ namespace vl::presentation::remoteprotocol L"COLON", L"SEMICOLON", L"COMMA", + L"DOT", L"QUESTION", L"SPACE", }; @@ -12358,7 +12824,9 @@ namespace vl::presentation::remoteprotocol static const wchar_t* results[] = { L"var", L"enum", + L"union", L"struct", + L"class", L"message", L"request", L"response", @@ -12371,6 +12839,7 @@ namespace vl::presentation::remoteprotocol L"char", L"key", L"color", + L"binary", nullptr, nullptr, nullptr, @@ -12383,6 +12852,7 @@ namespace vl::presentation::remoteprotocol L":", L";", L",", + L".", L"?", nullptr, }; @@ -12395,7 +12865,9 @@ namespace vl::presentation::remoteprotocol static const wchar_t* results[] = { L"var", L"enum", + L"union", L"struct", + L"class", L"message", L"request", L"response", @@ -12408,6 +12880,7 @@ namespace vl::presentation::remoteprotocol L"char", L"key", L"color", + L"binary", L"(::[a-zA-Z_][a-zA-Z_0-9<>]*){1,}", L"@[a-zA-Z_][a-zA-Z_0-9]*", L"[a-zA-Z_][a-zA-Z_0-9]*", @@ -12420,6 +12893,7 @@ namespace vl::presentation::remoteprotocol L":", L";", L",", + L".", L"/?", L"/s+", }; @@ -12429,19 +12903,19 @@ namespace vl::presentation::remoteprotocol void GuiRemoteProtocolLexerData(vl::stream::IStream& outputStream) { - static const vl::vint dataLength = 1604; // 18064 bytes before compressing + static const vl::vint dataLength = 1775; // 21330 bytes before compressing static const vl::vint dataBlock = 256; - static const vl::vint dataRemain = 68; + static const vl::vint dataRemain = 239; static const vl::vint dataSolidRows = 6; static const vl::vint dataRows = 7; static const char* compressed[] = { - "\x90\x46\x00\x00\x3C\x06\x00\x00\x5E\x00\x01\xAE\x01\x84\x81\x81\x16\x82\x09\x08\x84\x8A\x0B\x84\x81\x06\x87\x04\xA0\x11\x84\x88\x14\x88\x83\x14\x17\x84\xAC\x1A\x84\x80\x18\x83\x1C\x04\xBA\x21\x84\x8B\x1C\x90\x82\x1E\x27\x84\xBE\x0A\x94\x87\x1D\x96\x82\x40\x30\x84\x81\x24\x82\x2C\x83\x2D\x37\x84\x9D\x3A\x94\x87\x2D\x9E\x82\x61\x40\x84\x82\x33\xA4\x83\x30\xA3\x04\xE4\x09\xA4\x85\x34\xA4\x82\x33\x4F\x84\xA7\x32\xA4\x80\x35\xAA\x82\x69\x58\x84\x8A\x3B\xAC\x83\x34\xAF\x04\xEC\x21\xA4\x8D\x34\xB0\x82\x37\x67\x84\xAF\x2A\xB4\x80\x39\xB6\x82\x71\x70\x84\x92\x33\xBC\x83\x38\xBB\x04\xF4\x39\xA4\x85\x3C\xBC\x82\x3B\x7F\x84\xB7\x24\x88\x3C\x81\x3C\xC3\x04\xFA\x09\xC4\x8B\x3C\xC4\x83\x3E\x8F\x84\x98\x12\xC4\xC9\x83\xC9\x80\x13\x04\x94\x04\x86\x0C\x83\x7F\xCF\xFF\x0C\x04\x95\x0E\xC8\xD2\xD3\x0B\x10\x81\x8E\x04\x81\x0C\x82\x08\x82\xAB\xAA\xC4\x86\x0D\x81\x81\x85\x80\x02\x04\x88\x10\xDC\xD9\x83\x03\xDE\x00\x0B\x00\xE4\x00\xE1\xD8\x00\xE3\xC6\x85\x04\x83\x05\xE4\x81\x01\xE6\xB2\x81\x8F\x04\x80\x0D\xD2\xD3\xEB\xD8\xD9\xDA\xFA", - "\x06\xEA\xEE\xEE\xD3\xDC\x81\x9B\xE4\x89\x0C\x81\xF0\x00\xE7\xE9\xE6\xEB\xF1\x82\xF5\xF6\xF6\xE8\xF0\xEE\xF1\xFF\xF5\xF8\xFB\xFB\xF3\xF9\xDD\xFF\xEC\xFD\xFC\xD1\xF3\xFE\x7C\x70\x81\x76\xFA\x76\x75\x80\x7E\xF2\x49\x86\x7F\x06\x0A\x88\x86\x80\x7C\x1C\x0D\x83\x81\x80\x14\x9E\x73\x85\x85\xD7\x57\x80\x7A\x84\x1C\x8F\x8E\x86\x83\x20\x87\x83\x7D\x07\x1D\xA0\x88\x87\x89\x19\xBB\x78\x8A\x86\xFF\x65\x87\x7A\x07\x2E\xB1\x8F\x86\x88\x32\xA6\x88\x8B\x8D\x2C\xA7\x89\x8F\x3F\x34\xB6\x7F\x05\x8D\x3D\xA1\x80\x91\x8D\x37\xB8\x8A\x8A\x8E\x47\xBC\x83\x93\x8C\x4B\xB7\x72\x44\x93\x50\x82\x96\x7D\x91\x2B\x89\x95\x87\x8E\x41\x99\x9D\x91\x08\x4D\x9A\x93\x94\x95\x18\xBB\x87\x95\x92\x5E\x92\x96\x9B\x79\x22\x1D\x9A\x9B\x97\x60\x94\x82\x9A\x9B\x64\xAB\x97\x99\x8D\x23\x32\x91\x91\x9B\x63\xA2\x70\x98\x96\x76\x84\x44\x0A\x9C\x25\x3D\x91\x94\x9E\x70\xBA\x94\x94\x9F\x51\xA7\x76\x0A\xA0\x73\x89\xAD\x90\xA1\x27\xA7\x06\x94\xA4\x94\x95\xA6\xA7\xA5\x98\xA7\x85\x46\xA1\xD7\x5B\xA0\x02\xA7\xA0\x96\x41\x41\xA8\xA3\xA2\xAF\xA6\xA9\xA4\xA7\xA5\xAB\xAA", - "\xAA\xAD\xA9\xAB\xAB\xA8\xA6\xA9\xA4\x81\x93\x81\x88\xA1\xA3\xB8\xA5\x9A\xAE\x9C\xB3\xBD\xAE\xAF\xAF\xC0\x81\xB2\xB3\xB0\xC4\x85\xB6\xB3\xB1\xC8\x89\xBA\xB3\xB2\xCC\x8D\xBE\xB3\xB3\xD0\x91\xB2\xB7\xB4\xD4\x95\xB6\xB7\xB5\xD8\x99\xBA\xB7\xB6\xDC\xA7\x88\x45\x40\xDF\x80\x01\xB9\xB8\xDD\xA5\xB7\xB7\x9B\xB6\xB1\x9E\xA3\xBA\xB9\xB5\x8A\x08\xA3\xC2\xA8\xBE\x7F\xAD\xBB\xAC\xB5\xBD\xBB\xEC\xB1\xB5\xAF\xBC\xEA\xB8\xBE\xBF\xBD\x41\xAB\x04\x91\xB0\xF2\xBD\x74\xBD\x89\x1B\x76\xBC\xA0\xC0\xF0\x7A\xBC\xA6\x91\x0F\xED\x8A\xC3\xC4\xFF\xB0\x77\x40\xC5\xF3\x4E\xC0\x01\x9B\x07\xD8\xCB\xC1\x89\x03\x5E\xC1\xC7\xAC\x05\xC2\x8D\xBC\xC3\x22\xE6\x9F\x08\x7C\x1E\x69\xCA\xC4\xC7\x27\xDF\xC4\xC5\x0C\x32\xF6\x80\xB1\xC9\xDF\x5D\xC5\xC5\xCA\xF7\xB2\x0F\xA0\xC1\xFB\x86\xC1\xCC\xCF\x72\xB3\x05\xCD\xC6\x40\xE3\xC1\x9B\xD0\x3B\xCD\xD8\xC8\x00\x34\x03\xC7\xCD\xD0\x26\xCA\xD7\x79\x0D\x47\xD9\xDE\xC9\xD2\x1B\xFB\x9C\xD3\xD3\x07\xB6\x0A\xD4\xAE\x2F\xDE\xD6\xD7\xD8\x60\xF2\x97\x0D\xC3\xDD\xB8\x09\x92\xDB\x01\x70\xD0\x02\xDC\x74\xC4\x45\xDD\xDC\x76", - "\xF9\xD8\xDF\xDE\x73\xFA\xDD\xDC\xDF\x77\xFF\xD2\xE1\xE0\x84\xFE\xD2\xB0\x48\x4A\xD5\x88\xE1\xD7\xD8\x4B\xEE\xE3\x47\x90\xC1\x4F\xE2\xE4\x91\xC0\x03\xE6\xE5\x95\xD7\xEA\xE5\xE6\x9C\xD4\xEE\xE4\xE6\x9F\xFD\x73\xB9\x46\xE0\x94\xD6\xBB\xE9\xC5\xB8\xC6\x87\xD7\x68\xED\xE3\xA0\xD7\x30\xE7\xD4\xD0\xC5\x22\x73\xEE\xBD\xD9\x87\xAC\xE6\xED\x90\x25\x7B\xE5\x88\xEE\x45\xBA\xCF\xD1\x0F\xAE\xF7\x78\x49\xBE\xB0\xE6\xDC\xE1\x8A\xBE\xCD\xF0\x8B\x4A\x5B\xD3\xD9\xE1\xA1\xCB\xDB\x8E\xF1\xDA\xEC\xAE\x48\xF2\xF4\xD5\xD5\x92\xEE\xD3\x35\xF1\x47\xF6\xE9\x78\xAA\xE3\x7B\xF7\xD8\xE6\x94\x4F\xF8\xDB\xFF\xA6\xF8\xAD\xE8\xC5\xF9\xFB\xBD\xC0\xD0\xCD\xF7\x67\xE7\x42\x12\xFF\xFE\x1F\xB5\xFE\xF7\xFD\x4A\x56\x3F\x10\x7C\x70\x7C\x8A\x7E\x78\x49\xF1\x6C\x7D\x01\x80\x04\x08\x78\x49\x79\x77\x09\x8B\x83\xBD\x45\x05\x79\x03\x8B\x69\x82\xF3\x64\x83\x9D\x41\x56\x08\x82\x07\x0D\x3B\x1D\x81\x21\x08\x80\x83\x84\xED\x23\x87\x84\x04\x28\x86\x08\xA9\x8C\x85\x15\xAE\x80\x00\x2A\x90\x85\x0B\xB2\x8F\x85\x18\xB6\x83\x86\x37\x8F\x87\xE1\x64\x7A\x3B\xC5\x7D\x85", - "\x73\xA0\x61\x8B\xE6\x1F\x73\x88\x21\x80\x8D\x88\x48\x87\x88\x0F\xCA\x71\x76\x00\x99\x82\x81\xE9\x76\x81\x9E\x4E\x8A\x82\x46\x48\x0F\x67\xDC\x6D\x8B\xF9\x20\x49\x09\x2A\x90\x8B\x89\x10\x80\x83\x14\xDB\x8F\x88\x5C\x4A\x0C\x80\x52\x94\x7B\x16\xCB\x0E\x8A\x09\x92\x6E\x7D\x60\x8C\x78\x15\xEC\x5C\x09\x36\x91\x8F\x81\xC1\x7A\x76\x1B\xEC\x5D\x09\x0A\xB8\x8E\x7E\x64\x96\x8C\x1A\xFF\x8F\x7F\x40\x9F\x8E\x79\x4E\x18\x88\x1C\xD3\x79\x5C\x0C\xA3\x6F\x09\x82\x8C\x91\xA5\x6F\x78\x3A\xE1\x51\x93\x8F\x36\x6B\x92\x18\xEA\x80\x7E\x4C\xA5\x88\x0A\x0E\x80\x5B\x08\x9F\x8C\x53\x18\xA6\x81\x49\x39\x94\x86\x2A\xA9\x9C\x94\x1C\xAE\x95\x86\xAF\x8B\x95\x2C\xA6\x95\x59\x28\x31\x88\x75\xB8\x9C\x5E\x24\xC2\x6E\x91\x43\x9E\x97\x8D\xBE\x54\x92\x1C\x86\x9F\x96\x05\x92\x0A\x91\xC1\x97\x96\xC4\x73\x8D\x69\x29\x17\x95\x4C\x69\x8D\x90\x33\xF7\x54\x0B\x67\x80\x9D\x57\xC2\x96\x7B\x34\xD6\x91\x4B\x2A\x3C\x54\x90\x08\x9B\x9A\x2F\xF3\x36\x0B\x41\x99\x8C\x89\x9D\x85\x8E\x3A\xDF\x97\x9D\x30\x84\x9F\x40\x57\x1C\x99\xD3\x51\x9A\x96\x71\x85\x9F\x9E\xF4\x7D", - "\x58\x16\x49\x4B\x9F\x80\x3D\x98\x00\xFF\x81\xA0\x41\x02\xAE\x9F\x81\x86\xA5\xA0\x08\xA0\xA3\x41\x8A\xA9\xA0\x82\x8C\xA7\xA1\x0E\xB1\xA3\x42\xF4\x9C\x96\x7B\xAB\x9B\x9C\xBF\x60\x9F\x05\x96\xA2\x9F\x32\x94\xA5\x6A\x1C\xBF\x41\x16\x1D\xA8\x98\x6C\x8A\x98\x7F\x7A\x97\xA3\x02\xB6\x26\x80\x8D\xA3\x89\x9D\x24\xBF\x40\x4E\x51\x7A\x92\x2D\xB0\xA0\xA3\x38\xB9\x92\xAF\x5C\x0E\x83\xEE\x3C\xA1\x20\x3F\xA0\x81\x50\xDA\x31\xA9\xA2\x84\x26\xA8\x40\xA7\xAA\x52\xC9\xAC\xA8\x00\x08\xAE\xA9\x4B\xB0\xA9\x53\xCF\xA4\xAB\xA8\x95\xAD\xA9\x1F\xB9\x65\x4A\xB1\xAB\x81\xAC\xAB\x75\x97\xF8\x97\x92\x57\xDB\x8F\x9D\x06\x7B\x21\xA7\x1E\xA1\x59\x50\xA4\x9B\x79\xA7\x84\xA9\x49\x57\xB2\xAA\x5C\xF1\xA4\xAE\xAB\xB6\xAB\xAA\x77\xB3\xAD\x5E\xEE\xAE\xA4\x4E\x95\x94\xAB\x2A\xBD\x3E\x3F\x5F\x1F\x33\x3F\x20\x36\xB0\xFD\x1F\x04\x40\x05\x21\x21\xD6\x0D\xB4\x35\x90\xAF\xB2\x64\x80\x0E\xB0\xCA\x91\xB6\xB2\x93\xB7\x30\x00\x24\x43\xB3\xD7\x18\x32\x33\xA3\x3C\x30\x41\x28\x31\x21\xF2\x0B\x44\x20\x11\x53\xB1\x65\xAB\xB7\xB2\xD6\xAA\xB5\xB5\xB0\xB3\xB0\x67\x80", - "\x05\x3B\x80\x29\xB4\xB1\xAE\xB8\xB2\x6E\xB9\xB5\xB3\xDD\x2F\xB7\xB7\x00\x0F\x22\x74\x54\x3E\x39\xD8\xBB\xB6\xB8\xBF\x20\xBA\x68\x13\xB3\x3B\x80\x33\xB4\x36\xC0\xBC\xB6\x42\x13\xB6\x39\xD9\xB9\x31\x20\xC2\x31\xB9\x6D\x00\x0D\xB8\x00\x0C\x39\x20\xC4\x2C\xB8\x41\x4A\x31\x20", + "\x52\x53\x00\x00\xE7\x06\x00\x00\x6D\x00\x01\xAF\x01\x84\x81\x82\x16\x82\x09\x08\x84\x8A\x0B\x84\x81\x06\x87\x04\xA0\x11\x84\x88\x14\x88\x83\x14\x17\x84\xAC\x1A\x84\x87\x82\x82\x82\x30\x04\xB9\x04\x8A\x1C\x90\x83\x1D\x27\x84\xBC\x0A\x94\x86\x1D\x96\x82\x3F\x30\x84\x80\x23\x9C\x81\x20\x82\x5A\x04\x9B\x3A\x94\x85\x2D\x9E\x82\x5F\x40\x84\x81\x33\xA4\x82\x30\xA3\x04\xE3\x09\xA4\x84\x34\xA4\x83\x32\x4F\x84\xA6\x32\xA4\x87\x31\xAA\x82\x68\x58\x84\x89\x3B\xAC\x82\x34\xAF\x04\xEB\x21\xA4\x8C\x34\xB0\x82\x80\x01\xE8\x80\x0E\x34\x84\xB5\x81\x37\x04\xF0\x81\x90\x34\x84\xB9\x81\x38\x04\xF8\x81\x92\x34\x84\xBD\x81\x39\x04\x80\xC1\x94\x34\x84\xC1\x81\x3A\x04\x88\xC1\x96\x34\x84\xC5\x81\x3B\x04\xF8\x04\x99\x33\xCC\x82\x3C\xCB\x04\xFB\x19\xC4\x8D\x3C\xCC\x82\x0D\x9F\xA1\xC1\x80\xD1\x84\x08\x83\x0A\x04\x97\x04\x98\x04\x87\x7E\xD7\x7F\x0F\x81\x96\x0D\xDF\xD5\xD9\x0C\x82\x0E\x04\x8F\x04\x82\x0C\x83\x08\xDD\xC0\x81\x88\x04\x85\x04\x83\x04\x82\x02\x0D\x81\x9B\xDB\xE2\x85\xE7\x80\x0C\x41\xC0\x06\x02\xEC\xE4\x00\xEB\xD6\x87\x04\x84", + "\x02\xEB\x00\x83\x00\xD5\xD2\xD0\x04\x81\x0C\xD9\xDB\xF3\xE8\xE9\xEA\xF5\xDC\x0E\xF3\xF5\xF7\xAE\xED\xC1\x8A\xF2\xF8\x03\x0C\x82\xF5\xF9\xF8\xFB\xF1\x82\xFD\xFE\xFE\x00\x3E\x71\x80\x80\x02\x85\x84\x83\x81\xFF\x49\x80\x00\x7C\x0C\x8D\x84\x7E\x7B\x0E\xA8\x75\x7F\x83\x0A\x86\x85\x84\x82\x03\x97\x8A\x84\x00\x1D\x18\x86\x85\x86\x20\x9E\x0E\x84\x84\x11\xA5\x84\x87\x82\x26\x92\x84\x89\x7C\x23\x9B\x8F\x87\x8B\x00\x9F\x0D\x88\x88\x30\xAE\x8B\x89\x8A\x38\x93\x88\x8C\x7B\x37\xB5\x84\x8F\x8C\x3E\x81\x98\x86\x44\x36\x9B\x8B\x8F\x91\xAF\x7A\x88\x92\x92\xE7\x42\x95\x90\x00\x22\x33\x81\x08\x86\x23\x00\x96\x96\x91\x48\x87\x9C\x93\x8E\x5B\x89\x97\x94\x00\x24\x1F\x9E\x93\x8F\x4F\xA3\x9D\x95\x96\x11\xA7\x96\x8A\x9A\x63\xA5\x02\x9B\x9B\x65\xB0\x90\x88\x9A\x5C\xB7\x85\x88\x9B\x72\x9F\x87\x0A\x9C\x26\x39\x9F\x94\x9D\x39\xB6\x99\x99\x8F\x7E\xB1\x9F\x91\x45\x86\xA4\x9A\xA3\x87\x80\xA9\x8A\x9B\x9D\x84\x89\xA6\x98\x80\x18\x52\xA5\xA2\xA2\x8D\xAB\x92\xA2\x83\x78\x96\xAE\xA7\xA2\x00\xAA\x07\xA6\x8F\x99\x90\xA3\x7D\x96\x9D\xA0\xAA\x83\x0A", + "\xA3\xAD\xAF\xA7\xA3\xA5\xAF\x7B\x47\xA9\xB1\xB5\xA6\xAF\xAD\xB8\xB9\xA0\x7D\x0B\x37\xBC\xA1\x42\xAF\x00\x00\xB2\xB0\x41\xC3\xBF\xA4\xB3\xB1\xC6\x89\xB1\xB0\xB2\xCB\x8A\xB5\xB1\xB3\xD0\x8F\xB2\xB4\xB3\xBA\xA7\x88\x99\xAA\x93\xAF\xAE\xAA\xAA\xDC\x95\xBE\xB7\xB7\xE0\xA1\xB2\xBB\xB8\xE4\xA5\xB6\xBB\xB9\xE8\xA9\xBA\xBB\xBA\xEC\xAD\xBE\xBB\xBB\xF0\xB1\xB2\xBF\xBC\xF4\xB5\xB6\xBF\xBD\xF8\xB9\xBA\xBF\xBE\xFC\xBD\xBE\xBF\xBF\xAE\x5E\x40\x02\xC0\x04\xDB\xA0\xC3\xC1\xE8\xB0\xAC\xA5\xA4\xDC\x99\xBD\xC3\x97\x03\x5A\xBA\x80\xB9\x0A\xCD\x88\xB7\xB6\x0E\xD9\xCF\x9F\xB8\x15\xCC\x87\xC6\xC4\x0F\xE0\xCF\x85\x48\x89\x94\xC6\xC2\xC7\x0C\xFE\x81\x0C\xC6\x2C\xE5\xCC\xC7\xC9\xF0\x5F\xC1\xC8\xB7\x32\x2D\xC3\xCC\xA9\x2F\xF4\xAA\x95\xCA\x36\xDA\xCA\x83\x0C\xDB\xA6\xCA\xCD\x9D\x43\xDE\x91\x40\x0D\x3D\xC9\xD0\xCA\xD0\x28\x8B\x9C\xC1\x0D\x4A\xF7\xC1\xD5\xC7\xB5\x94\xDF\x7A\xCC\x3E\xDC\xB6\x0F\xD4\x33\x8C\xD7\xB4\xCF\x22\xDC\xD1\x43\x0D\x97\x9E\xD8\xA8\xD8\x52\xE1\xDF\x90\x0E\x00\xA3\x4B\xD1\xCE\x4D\xFB\xC5\xD0\x8B\x6A\xE9\xDA\xA1\x49\x75", + "\xCC\xA0\xDF\xD7\x73\xFF\x39\xD5\xD6\x28\x79\xDD\xD7\xDE\x67\xFD\xDF\xDE\xD8\x8A\xAB\x4F\xA6\xD9\x4E\xC6\xE8\xE2\x8F\x3D\x08\xEC\xE2\xDC\x71\xFC\x82\xE3\xE5\x33\xEE\x4E\xCA\xB8\x56\xEB\x78\xD7\xE3\x88\xF1\x43\xC7\xBF\x34\x7D\xD5\xE8\x00\xA7\xE9\xE5\x4D\x40\xAA\xEC\xEB\xE8\xEA\xAF\xED\xE0\xEE\xEB\xB4\xF3\xE6\xEE\xEC\xB8\xF1\xEF\xE8\xB9\x37\x7D\xD5\x89\xEF\x95\xEF\x60\xF3\xF0\x36\x45\xF1\x40\xF1\xC7\xC6\xF0\x00\xF2\xCB\xCA\xFC\xF3\xF3\xCE\xD1\xF9\xF3\xF4\xCD\xD4\xFC\x81\xC1\x1F\x59\xF1\xF0\xC2\xDC\xE9\xBD\xE6\xB5\xE9\x47\xE8\xE6\xF8\x98\x84\xED\xE3\xF6\x7E\xE0\xEA\x82\x10\xEA\xF3\x96\xF8\xE5\x27\xA4\xF3\x9B\x10\xED\xD3\xE4\xD0\xFA\xF2\xD7\xA4\x12\xE4\xEF\xF7\xF1\xFF\xB6\x46\x0D\x7D\x11\x1B\x6C\x72\x98\x57\x68\x6D\xF9\x78\x73\x11\x65\x6D\x7F\x40\x4E\x73\x7C\x36\x68\x09\xD0\x0D\x8E\x50\x04\xAD\x7D\x3E\x49\x1C\x7D\x01\xBE\x73\x51\x07\xB6\x69\x81\x33\x6A\x08\x03\x9B\x88\x7C\x53\x78\x7F\x82\x36\x6B\x08\x01\xE1\x5F\x7B\xF0\x56\x80\x82\x89\x4C\x09\xD4\x76\x7E\x81\x13\xB0\x82\x51\x4D\x08\x87\xE8\x24\x8C\x6E\x1B\x80\x06", + "\x09\x3A\x9F\x83\x08\xAC\x86\x80\xCF\x6F\x82\x88\x37\x84\x7C\x0D\x95\x8E\x83\x27\x01\x88\x84\x7A\x7C\x85\xE1\x3E\x85\x3E\x28\x0F\x8A\x83\x44\x9C\x83\xC2\x1E\x80\x8B\x2B\x98\x4A\x5C\x51\x04\x22\x14\x6E\x31\x8D\x80\x25\x88\x7D\x67\x8A\x3F\x19\xEB\x84\x20\x36\xA6\x8D\x8D\x70\x8F\x8E\x1C\x80\x0E\x8C\x3A\xB1\x8E\x8E\x73\x95\x8E\x1E\xF7\x8B\x8F\x39\xBC\x75\x88\xEA\x20\x79\x20\xD2\x75\x7B\x42\x90\x7C\x7A\x87\x86\x90\x21\x89\x9C\x91\x45\x80\x95\x51\x2D\x8A\x44\x17\xDE\x88\x88\xBB\x4B\x8A\x53\x93\x89\x8A\xCD\x53\x02\x4F\x4B\xA6\x87\x7F\x9A\x9B\x40\x15\x75\x74\x82\x4C\x94\x88\x40\x55\x14\x90\x08\x9E\x9D\x83\x53\xA1\x92\x51\x56\x04\x96\x14\xE7\x70\x95\x4A\x9D\x8A\x41\x57\x03\x88\xB8\x11\x9D\x49\x23\xB7\x96\x96\xBA\x9F\x58\x2F\x96\x7E\x94\x60\xB7\x80\x0B\x13\x93\x94\xFC\x2E\x81\x21\x2C\x2A\x90\x8B\xBB\x8F\x92\x24\xC5\x9F\x43\x9C\x2F\x97\x97\xAC\x9B\x88\x35\xC1\x8B\x27\x57\x99\x9E\x62\xBE\x8F\x98\xE6\x5F\x98\x65\x4C\x86\x9F\x9C\x02\x5C\x09\x32\xD9\x85\x85\x56\xB5\x97\x97\xE4\x7E\x27\xE2\x25\x9F\x92\x66\xA8\x9B\x46\x5E\x14", + "\x90\xB9\x67\x83\x8C\x9D\x75\x8A\x8D\x37\x5D\x8C\x1E\x83\xA2\xA1\x82\xBC\x8F\xA0\x79\x88\xA0\x41\x8A\xAF\x9F\x73\x41\x2A\x8B\xDD\x71\xA1\x3D\xB4\x96\x9E\x78\xA2\x9D\x9D\xB8\x43\x9A\xD1\x5B\x97\x9B\x20\xA4\x99\x66\xE1\x9D\xA3\xA7\x60\x0D\x92\x7A\xAE\x9D\xA2\x72\x44\x2A\x48\xE7\x9F\xA3\x03\xA6\x9E\xA2\x2B\xA2\x41\x4B\xC6\x8F\xA5\x8B\xAB\x96\xA4\xDA\x8F\x9F\x97\x47\x21\xA7\x60\x9E\x5A\xA3\x74\x7C\xA3\x3D\x98\x7A\x29\xB7\x4A\x9E\x7F\x28\xBD\xA5\x40\x4D\x2B\xA5\x99\xA0\x7B\x9A\x30\xA3\xAB\xCC\x50\x2B\x86\x76\xBD\x82\xA7\x4A\xB2\xA9\x14\xD6\xA3\x8A\xAC\x8A\x53\x2A\x59\xAA\x8B\xBF\x56\x2D\x6E\xB2\x80\x06\xAC\x68\xB7\x29\x40\x69\xAB\xAC\xB5\xA7\xAE\xAD\x6C\xAF\xAD\x5B\xF3\xA2\xAF\xBA\xB1\xAF\xAE\x70\xAE\xAE\x53\xF6\x9E\xAB\xA8\xBE\xAA\x9A\x74\x40\xA9\xFA\x35\xA1\xAC\x68\x82\x98\xB0\xC4\x9D\xAC\x80\x59\x25\xB1\xBA\x7B\xAB\x9A\x8A\xAD\xB0\xB7\x5C\x23\x9F\xA3\xB5\x81\xB2\x5A\xB7\x53\x57\x46\xAC\xAA\x8A\x90\xAE\xA6\x33\x98\xA4\x38\x84\xB9\xB2\xC9\x82\xB3\x47\x62\x21\x21\x3F\xF1\x69\xB4\x00\x2D\xB2\x3D\xAF\xA9\x3D\x6B\xB3", + "\xB3\x2D\x80\x34\xB6\xB6\xB5\xAE\xB5\x6E\xB7\xBA\xB6\xDC\xBE\xB5\xB7\xC0\xBC\xB6\x70\xBB\xB4\xB8\x88\xB6\x52\xB0\x9F\x66\xB5\x68\x96\xBC\x88\xA1\xBF\xAD\xA9\xA2\xA5\x9E\x73\x80\x45\x2C\xE5\x9C\xB0\x5C\xAD\xAB\xB5\x6D\x3C\xB0\xB7\x1B\x43\xBF\xB7\xDF\xA1\xB9\x71\xE2\xB0\xBD\xF1\xA1\xBF\xBC\xE3\xAF\xB1\x2F\xA4\xBF\xB9\xD2\xA5\x7F\x3D\xFE\x1F\x17\x6B\x6F\x15\x37\x7D\x3F\x0F\x1F\x1F\x0A\x2D\x41\x26\x35\x34\x82\x3C\xB8\x00\xFF\xA1\xC2\x7F\x83\xCD\xBF\x02\xC0\xC4\xC0\xF6\x24\x23\x94\x06\xC8\x34\xD9\x29\x33\x35\x04\x37\x37\x68\x00\x4D\x43\x80\x22\x41\x20\x32\x41\x20\x91\x07\xC6\xC0\x01\xDD\xC0\xC1\x1E\xDC\xC2\x88\xA1\xC4\xC4\x04\xCB\xC0\x00\xBF\x3A\xC1\x41\x20\xCC\xC5\x0F\xEE\xC3\xC4\x2D\xC0\x00\x43\x2F\xC6\x3B\xDE\x01\x21\xC5\x00\x00\x3F\x8B\xA5\xC1\x21\xDC\x3B\xC0\xC1\x09\x3F\xC5\x40\x36\xC0\x01\x13\xC3\x39\x20\xC9\x2F\xC4\x77\x01\x23\x3C\x21\xE2\xC7\x38\x06\xC7\xC6\x77\x01\x21\x36\x18\xC6\xC5\x3C\xD0\x3C\x34\x71\x04\x24\x3A\x03\xC4\xCA\x3B\x01\x20", }; vl::glr::DecompressSerializedData(compressed, true, dataSolidRows, dataRows, dataBlock, dataRemain, outputStream); } @@ -13544,14 +14018,20 @@ GuiWorkflowSharedManagerPlugin { } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - sharedManagerPlugin = this; + if (controllerUnrelatedPlugins) + { + sharedManagerPlugin = this; + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - sharedManagerPlugin = 0; + if (controllerUnrelatedPlugins) + { + sharedManagerPlugin = 0; + } } WfLexicalScopeManager* GetWorkflowManager(GuiResourceCpuArchitecture targetCpuArchitecture) @@ -15038,6 +15518,41 @@ WorkflowGenerateCreatingVisitor { Workflow_RecordScriptPosition(precompileContext, resolvingResult.context->tagPosition, ctorStats); statements->statements.Add(ctorStats); + + auto instanceName = repr->instanceName.ToString(); + auto generatedNamePrefix = WString::Unmanaged(L""); + if (instanceName.Length() < generatedNamePrefix.Length() || instanceName.Left(generatedNamePrefix.Length()) != generatedNamePrefix) + { + auto refName = Ptr(new WfStringExpression); + refName->value.value = instanceName; + + auto refInstance = Ptr(new WfReferenceExpression); + refInstance->name.value = instanceName; + + auto refThis = Ptr(new WfReferenceExpression); + refThis->name.value = L""; + + auto refSetNamedObject = Ptr(new WfMemberExpression); + refSetNamedObject->parent = refThis; + refSetNamedObject->name.value = L"SetNamedObject"; + + auto refCall = Ptr(new WfCallExpression); + refCall->function = refSetNamedObject; + refCall->arguments.Add(refName); + refCall->arguments.Add(refInstance); + + auto statSetNamedObject = Ptr(new WfExpressionStatement); + statSetNamedObject->expression = refCall; + + if (auto block = ctorStats.Cast()) + { + block->statements.Add(statSetNamedObject); + } + else + { + statements->statements.Add(statSetNamedObject); + } + } } else if (errorCount == errors.Count()) { diff --git a/Import/GacUICompiler.h b/Import/GacUICompiler.h index 1e5d2f3a..993bb44f 100644 --- a/Import/GacUICompiler.h +++ b/Import/GacUICompiler.h @@ -1072,6 +1072,7 @@ Licensed under https://github.com/vczh-libraries/License namespace vl::presentation::remoteprotocol { + class GuiRpArrayMapType; class GuiRpArrayType; class GuiRpAttribute; class GuiRpDeclaration; @@ -1079,6 +1080,7 @@ namespace vl::presentation::remoteprotocol class GuiRpEnumMember; class GuiRpEventDecl; class GuiRpEventRequest; + class GuiRpMapType; class GuiRpMessageDecl; class GuiRpMessageRequest; class GuiRpMessageResponse; @@ -1089,6 +1091,8 @@ namespace vl::presentation::remoteprotocol class GuiRpStructDecl; class GuiRpStructMember; class GuiRpType; + class GuiRpUnionDecl; + class GuiRpUnionMember; enum class GuiRpPrimitiveTypes { @@ -1101,6 +1105,14 @@ namespace vl::presentation::remoteprotocol Char = 5, Key = 6, Color = 7, + Binary = 8, + }; + + enum class GuiRpStructType + { + UNDEFINED_ENUM_ITEM_VALUE = -1, + Struct = 0, + Class = 1, }; class GuiRpType abstract : public vl::glr::ParsingAstBase, vl::reflection::Description @@ -1113,6 +1125,8 @@ namespace vl::presentation::remoteprotocol virtual void Visit(GuiRpReferenceType* node) = 0; virtual void Visit(GuiRpOptionalType* node) = 0; virtual void Visit(GuiRpArrayType* node) = 0; + virtual void Visit(GuiRpArrayMapType* node) = 0; + virtual void Visit(GuiRpMapType* node) = 0; }; virtual void Accept(GuiRpType::IVisitor* visitor) = 0; @@ -1151,6 +1165,24 @@ namespace vl::presentation::remoteprotocol void Accept(GuiRpType::IVisitor* visitor) override; }; + class GuiRpArrayMapType : public GuiRpType, vl::reflection::Description + { + public: + vl::glr::ParsingToken element; + vl::glr::ParsingToken keyField; + + void Accept(GuiRpType::IVisitor* visitor) override; + }; + + class GuiRpMapType : public GuiRpType, vl::reflection::Description + { + public: + vl::Ptr element; + vl::Ptr keyType; + + void Accept(GuiRpType::IVisitor* visitor) override; + }; + class GuiRpAttribute : public vl::glr::ParsingAstBase, vl::reflection::Description { public: @@ -1165,6 +1197,7 @@ namespace vl::presentation::remoteprotocol { public: virtual void Visit(GuiRpEnumDecl* node) = 0; + virtual void Visit(GuiRpUnionDecl* node) = 0; virtual void Visit(GuiRpStructDecl* node) = 0; virtual void Visit(GuiRpMessageDecl* node) = 0; virtual void Visit(GuiRpEventDecl* node) = 0; @@ -1190,6 +1223,20 @@ namespace vl::presentation::remoteprotocol void Accept(GuiRpDeclaration::IVisitor* visitor) override; }; + class GuiRpUnionMember : public vl::glr::ParsingAstBase, vl::reflection::Description + { + public: + vl::glr::ParsingToken name; + }; + + class GuiRpUnionDecl : public GuiRpDeclaration, vl::reflection::Description + { + public: + vl::collections::List> members; + + void Accept(GuiRpDeclaration::IVisitor* visitor) override; + }; + class GuiRpStructMember : public vl::glr::ParsingAstBase, vl::reflection::Description { public: @@ -1200,6 +1247,7 @@ namespace vl::presentation::remoteprotocol class GuiRpStructDecl : public GuiRpDeclaration, vl::reflection::Description { public: + GuiRpStructType type = GuiRpStructType::UNDEFINED_ENUM_ITEM_VALUE; vl::collections::List> members; void Accept(GuiRpDeclaration::IVisitor* visitor) override; @@ -1256,12 +1304,17 @@ namespace vl::reflection::description DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpReferenceType) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpOptionalType) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpArrayType) + DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpArrayMapType) + DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMapType) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpAttribute) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpDeclaration) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpEnumMember) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpEnumDecl) + DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpUnionMember) + DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpUnionDecl) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructMember) + DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructType) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpStructDecl) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMessageRequest) DECL_TYPE_INFO(vl::presentation::remoteprotocol::GuiRpMessageResponse) @@ -1293,6 +1346,16 @@ namespace vl::reflection::description INVOKE_INTERFACE_PROXY(Visit, node); } + void Visit(vl::presentation::remoteprotocol::GuiRpArrayMapType* node) override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + + void Visit(vl::presentation::remoteprotocol::GuiRpMapType* node) override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + END_INTERFACE_PROXY(vl::presentation::remoteprotocol::GuiRpType::IVisitor) BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(vl::presentation::remoteprotocol::GuiRpDeclaration::IVisitor) @@ -1301,6 +1364,11 @@ namespace vl::reflection::description INVOKE_INTERFACE_PROXY(Visit, node); } + void Visit(vl::presentation::remoteprotocol::GuiRpUnionDecl* node) override + { + INVOKE_INTERFACE_PROXY(Visit, node); + } + void Visit(vl::presentation::remoteprotocol::GuiRpStructDecl* node) override { INVOKE_INTERFACE_PROXY(Visit, node); @@ -1348,6 +1416,7 @@ namespace vl::presentation::remoteprotocol::json_visitor , protected virtual GuiRpDeclaration::IVisitor { protected: + virtual void PrintFields(GuiRpArrayMapType* node); virtual void PrintFields(GuiRpArrayType* node); virtual void PrintFields(GuiRpAttribute* node); virtual void PrintFields(GuiRpDeclaration* node); @@ -1355,6 +1424,7 @@ namespace vl::presentation::remoteprotocol::json_visitor virtual void PrintFields(GuiRpEnumMember* node); virtual void PrintFields(GuiRpEventDecl* node); virtual void PrintFields(GuiRpEventRequest* node); + virtual void PrintFields(GuiRpMapType* node); virtual void PrintFields(GuiRpMessageDecl* node); virtual void PrintFields(GuiRpMessageRequest* node); virtual void PrintFields(GuiRpMessageResponse* node); @@ -1365,14 +1435,19 @@ namespace vl::presentation::remoteprotocol::json_visitor virtual void PrintFields(GuiRpStructDecl* node); virtual void PrintFields(GuiRpStructMember* node); virtual void PrintFields(GuiRpType* node); + virtual void PrintFields(GuiRpUnionDecl* node); + virtual void PrintFields(GuiRpUnionMember* node); protected: void Visit(GuiRpPrimitiveType* node) override; void Visit(GuiRpReferenceType* node) override; void Visit(GuiRpOptionalType* node) override; void Visit(GuiRpArrayType* node) override; + void Visit(GuiRpArrayMapType* node) override; + void Visit(GuiRpMapType* node) override; void Visit(GuiRpEnumDecl* node) override; + void Visit(GuiRpUnionDecl* node) override; void Visit(GuiRpStructDecl* node) override; void Visit(GuiRpMessageDecl* node) override; void Visit(GuiRpEventDecl* node) override; @@ -1384,6 +1459,7 @@ namespace vl::presentation::remoteprotocol::json_visitor void Print(GuiRpDeclaration* node); void Print(GuiRpAttribute* node); void Print(GuiRpEnumMember* node); + void Print(GuiRpUnionMember* node); void Print(GuiRpStructMember* node); void Print(GuiRpMessageRequest* node); void Print(GuiRpMessageResponse* node); @@ -1410,47 +1486,58 @@ namespace vl::presentation::remoteprotocol { enum class GuiRemoteProtocolClasses : vl::vint32_t { - ArrayType = 0, - Attribute = 1, - Declaration = 2, - EnumDecl = 3, - EnumMember = 4, - EventDecl = 5, - EventRequest = 6, - MessageDecl = 7, - MessageRequest = 8, - MessageResponse = 9, - OptionalType = 10, - PrimitiveType = 11, - ReferenceType = 12, - Schema = 13, - StructDecl = 14, - StructMember = 15, - Type = 16, + ArrayMapType = 0, + ArrayType = 1, + Attribute = 2, + Declaration = 3, + EnumDecl = 4, + EnumMember = 5, + EventDecl = 6, + EventRequest = 7, + MapType = 8, + MessageDecl = 9, + MessageRequest = 10, + MessageResponse = 11, + OptionalType = 12, + PrimitiveType = 13, + ReferenceType = 14, + Schema = 15, + StructDecl = 16, + StructMember = 17, + Type = 18, + UnionDecl = 19, + UnionMember = 20, }; enum class GuiRemoteProtocolFields : vl::vint32_t { - ArrayType_element = 0, - Attribute_cppType = 1, - Attribute_name = 2, - Declaration_attributes = 3, - Declaration_name = 4, - EnumDecl_members = 5, - EnumMember_name = 6, - EventDecl_request = 7, - EventRequest_type = 8, - MessageDecl_request = 9, - MessageDecl_response = 10, - MessageRequest_type = 11, - MessageResponse_type = 12, - OptionalType_element = 13, - PrimitiveType_type = 14, - ReferenceType_name = 15, - Schema_declarations = 16, - StructDecl_members = 17, - StructMember_name = 18, - StructMember_type = 19, + ArrayMapType_element = 0, + ArrayMapType_keyField = 1, + ArrayType_element = 2, + Attribute_cppType = 3, + Attribute_name = 4, + Declaration_attributes = 5, + Declaration_name = 6, + EnumDecl_members = 7, + EnumMember_name = 8, + EventDecl_request = 9, + EventRequest_type = 10, + MapType_element = 11, + MapType_keyType = 12, + MessageDecl_request = 13, + MessageDecl_response = 14, + MessageRequest_type = 15, + MessageResponse_type = 16, + OptionalType_element = 17, + PrimitiveType_type = 18, + ReferenceType_name = 19, + Schema_declarations = 20, + StructDecl_members = 21, + StructDecl_type = 22, + StructMember_name = 23, + StructMember_type = 24, + UnionDecl_members = 25, + UnionMember_name = 26, }; extern const wchar_t* GuiRemoteProtocolTypeName(GuiRemoteProtocolClasses type); @@ -1489,36 +1576,40 @@ namespace vl::presentation::remoteprotocol { VAR = 0, ENUM = 1, - STRUCT = 2, - MESSAGE = 3, - REQUEST = 4, - RESPONSE = 5, - EVENT = 6, - BOOLEAN = 7, - INTEGER = 8, - FLOAT = 9, - DOUBLE = 10, - STRING = 11, - CHAR = 12, - KEY = 13, - COLOR = 14, - CPP_NAME = 15, - ATT_NAME = 16, - NAME = 17, - OPEN_BRACE = 18, - CLOSE_BRACE = 19, - OPEN_ARRAY = 20, - CLOSE_ARRAY = 21, - OPEN = 22, - CLOSE = 23, - COLON = 24, - SEMICOLON = 25, - COMMA = 26, - QUESTION = 27, - SPACE = 28, + UNION = 2, + STRUCT = 3, + CLASS = 4, + MESSAGE = 5, + REQUEST = 6, + RESPONSE = 7, + EVENT = 8, + BOOLEAN = 9, + INTEGER = 10, + FLOAT = 11, + DOUBLE = 12, + STRING = 13, + CHAR = 14, + KEY = 15, + COLOR = 16, + BINARY = 17, + CPP_NAME = 18, + ATT_NAME = 19, + NAME = 20, + OPEN_BRACE = 21, + CLOSE_BRACE = 22, + OPEN_ARRAY = 23, + CLOSE_ARRAY = 24, + OPEN = 25, + CLOSE = 26, + COLON = 27, + SEMICOLON = 28, + COMMA = 29, + DOT = 30, + QUESTION = 31, + SPACE = 32, }; - constexpr vl::vint GuiRemoteProtocolTokenCount = 29; + constexpr vl::vint GuiRemoteProtocolTokenCount = 33; extern bool GuiRemoteProtocolTokenDeleter(vl::vint token); extern const wchar_t* GuiRemoteProtocolTokenId(GuiRemoteProtocolTokens token); extern const wchar_t* GuiRemoteProtocolTokenDisplayText(GuiRemoteProtocolTokens token); @@ -1545,20 +1636,23 @@ namespace vl::presentation::remoteprotocol enum class ParserStates { RType = 0, - RAttributeParameter = 16, - RAttribute = 19, - REnumMember = 27, - REnum = 31, - RStructMember = 38, - RStruct = 45, - RMessageRequest = 52, - RMessageResponse = 58, - RMessage = 64, - REventRequest = 72, - REvent = 78, - RDeclDetail = 85, - RDecl = 91, - Schema = 95, + RAttributeParameter = 26, + RAttribute = 29, + REnumMember = 37, + REnum = 41, + RUnionMember = 48, + RUnion = 52, + RStructMember = 59, + RStructBody = 66, + RStruct = 72, + RMessageRequest = 78, + RMessageResponse = 84, + RMessage = 90, + REventRequest = 98, + REvent = 104, + RDeclDetail = 111, + RDecl = 118, + Schema = 122, }; const wchar_t* ParserRuleName(vl::vint index); @@ -1611,6 +1705,7 @@ namespace vl::presentation collections::SortedList dropRepeatDeclNames; collections::SortedList dropConsecutiveDeclNames; collections::Dictionary enumDecls; + collections::Dictionary unionDecls; collections::Dictionary structDecls; collections::Dictionary messageDecls; collections::Dictionary eventDecls; diff --git a/Import/GacUIReflection.cpp b/Import/GacUIReflection.cpp index 135d7f56..f4181832 100644 --- a/Import/GacUIReflection.cpp +++ b/Import/GacUIReflection.cpp @@ -217,13 +217,16 @@ Plugin GUI_PLUGIN_DEPEND(GacUI_Res_ResourceResolver); } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - IGuiResourceResolverManager* manager = GetResourceResolverManager(); - manager->SetTypeResolver(Ptr(new GuiResourceCompiledWorkflowTypeResolver)); + if (controllerUnrelatedPlugins) + { + IGuiResourceResolverManager* manager = GetResourceResolverManager(); + manager->SetTypeResolver(Ptr(new GuiResourceCompiledWorkflowTypeResolver)); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -2412,6 +2415,9 @@ Type Declaration (Class) CLASS_MEMBER_BASE(GuiControl) CLASS_MEMBER_BASE(GuiInstanceRootObject) CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE(GuiCustomControl) + + CLASS_MEMBER_METHOD(SetFocusableComposition, { L"value" }) + CLASS_MEMBER_PROPERTY(FocusableComposition, GetFocusableComposition, SetFocusableComposition) END_CLASS_MEMBER(GuiCustomControl) BEGIN_CLASS_MEMBER(GuiLabel) @@ -3658,22 +3664,25 @@ namespace vl { } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - LoadPredefinedTypes(); - LoadParsing2Types(); - XmlAstLoadTypes(); - JsonAstLoadTypes(); - WfLoadLibraryTypes(); - LoadGuiBasicTypes(); - LoadGuiElementTypes(); - LoadGuiCompositionTypes(); - LoadGuiEventTypes(); - LoadGuiTemplateTypes(); - LoadGuiControlTypes(); + if (controllerUnrelatedPlugins) + { + LoadPredefinedTypes(); + LoadParsing2Types(); + XmlAstLoadTypes(); + JsonAstLoadTypes(); + WfLoadLibraryTypes(); + LoadGuiBasicTypes(); + LoadGuiElementTypes(); + LoadGuiCompositionTypes(); + LoadGuiEventTypes(); + LoadGuiTemplateTypes(); + LoadGuiControlTypes(); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; @@ -3813,6 +3822,8 @@ Type Declaration (Extra) CLASS_MEMBER_METHOD(AddControlHostComponent, {L"controlHost"}) CLASS_MEMBER_METHOD(AddAnimation, { L"animation" }) CLASS_MEMBER_METHOD(KillAnimation, { L"animation" }) + CLASS_MEMBER_METHOD(GetNamedObject, { L"name" }) + CLASS_MEMBER_METHOD(SetNamedObject, { L"name" _ L"namedObject" }) END_CLASS_MEMBER(GuiInstanceRootObject) BEGIN_CLASS_MEMBER(GuiCommonScrollBehavior) @@ -3951,7 +3962,7 @@ Type Loader /*********************************************************************** !!!!!! DO NOT MODIFY !!!!!! -GacGen.exe Resource.xml +Source: GacUI FakeDialogServiceUI This file is generated by Workflow compiler https://github.com/vczh-libraries diff --git a/Import/GacUIReflection.h b/Import/GacUIReflection.h index 3b5959a4..5a0506aa 100644 --- a/Import/GacUIReflection.h +++ b/Import/GacUIReflection.h @@ -1225,7 +1225,7 @@ Interface Proxy (Controls) /*********************************************************************** !!!!!! DO NOT MODIFY !!!!!! -GacGen.exe Resource.xml +Source: GacUI FakeDialogServiceUI This file is generated by Workflow compiler https://github.com/vczh-libraries diff --git a/Import/Skins/DarkSkin/DarkSkin.cpp b/Import/Skins/DarkSkin/DarkSkin.cpp index c5edef1c..64c7bd4d 100644 --- a/Import/Skins/DarkSkin/DarkSkin.cpp +++ b/Import/Skins/DarkSkin/DarkSkin.cpp @@ -24950,6 +24950,7 @@ Class (::darkskin::ButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -25150,6 +25151,7 @@ Class (::darkskin::CheckBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_13)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -25290,6 +25292,7 @@ Class (::darkskin::ComboBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -25519,6 +25522,7 @@ Class (::darkskin::CustomFrameWindowTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); } (this->frameTable = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"frameTable"), ::vl::__vwsn::Box(this->frameTable)); { ::vl::__vwsn::This(this->frameTable)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -25618,6 +25622,7 @@ Class (::darkskin::CustomFrameWindowTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->frameTable)); } (this->contentTable = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"contentTable"), ::vl::__vwsn::Box(this->contentTable)); { ::vl::__vwsn::This(this->contentTable)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } @@ -25877,6 +25882,7 @@ Class (::darkskin::CustomFrameWindowTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_38)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(5)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -26116,6 +26122,7 @@ Class (::darkskin::DateButtonTemplateConstructor) ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -26177,6 +26184,7 @@ Class (::darkskin::DatePickerTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->look = new ::vl::presentation::templates::GuiCommonDatePickerLook(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#2D2D30")), ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#FFFFFF")), ::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#999999")))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetDateTextListTemplate(vl::Func(::vl_workflow_global::__vwsnf135_DarkSkin_darkskin_DatePickerTemplateConstructor___vwsn_darkskin_DatePickerTemplate_Initialize_(this))); } @@ -26315,6 +26323,7 @@ Class (::darkskin::DocumentTextBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -26398,6 +26407,7 @@ Class (::darkskin::DocumentViewerTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf82_DarkSkin_darkskin_DocumentViewerTemplateConstructor___vwsn_darkskin_DocumentViewerTemplate_Initialize_(this))); } @@ -26624,6 +26634,7 @@ Class (::darkskin::GroupBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } @@ -26634,6 +26645,7 @@ Class (::darkskin::GroupBoxTemplateConstructor) ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); } (this->titleBounds = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"titleBounds"), ::vl::__vwsn::Box(this->titleBounds)); { ::vl::__vwsn::This(this->titleBounds)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = (- static_cast<::vl::vint>(1)); return __vwsn_temp__; }()); } @@ -26791,6 +26803,7 @@ Class (::darkskin::HScrollTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"behavior"), ::vl::__vwsn::Box(this->behavior)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); } @@ -26827,6 +26840,7 @@ Class (::darkskin::HScrollTemplateConstructor) } { (this->buttonDecrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonDecrease"), ::vl::__vwsn::Box(this->buttonDecrease)); } (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition()); { @@ -26856,6 +26870,7 @@ Class (::darkskin::HScrollTemplateConstructor) } { (this->buttonIncrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonIncrease"), ::vl::__vwsn::Box(this->buttonIncrease)); } (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition()); { @@ -26874,6 +26889,7 @@ Class (::darkskin::HScrollTemplateConstructor) ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); } (this->handleContainer = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handleContainer"), ::vl::__vwsn::Box(this->handleContainer)); { ::vl::__vwsn::This(this->handleContainer)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(20); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(20); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -26881,6 +26897,7 @@ Class (::darkskin::HScrollTemplateConstructor) ::vl::__vwsn::This(this->handleContainer)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::NoLimit); } (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handle"), ::vl::__vwsn::Box(this->handle)); { ::vl::__vwsn::This(this->handle)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(10); return __vwsn_temp__; }()); } @@ -26979,6 +26996,7 @@ Class (::darkskin::HTrackerTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"behavior"), ::vl::__vwsn::Box(this->behavior)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); } @@ -27032,6 +27050,7 @@ Class (::darkskin::HTrackerTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); } (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handle"), ::vl::__vwsn::Box(this->handle)); { ::vl::__vwsn::This(this->handle)->SetWidthPageSize(static_cast(0)); } @@ -27129,6 +27148,7 @@ Class (::darkskin::ItemBackgroundTemplateConstructor) ::vl::__vwsn::This(this->self)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_0)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -27370,6 +27390,7 @@ Class (::darkskin::ListViewColumnHeaderTemplateConstructor) ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(11); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -27470,6 +27491,7 @@ Class (::darkskin::ListViewColumnHeaderTemplateConstructor) } { (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonArrow"), ::vl::__vwsn::Box(this->buttonArrow)); } (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); { @@ -27631,6 +27653,7 @@ Class (::darkskin::ListViewTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf119_DarkSkin_darkskin_ListViewTemplateConstructor___vwsn_darkskin_ListViewTemplate_Initialize_(this))); } @@ -28105,6 +28128,7 @@ Class (::darkskin::MultilineTextBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf313_DarkSkin_darkskin_MultilineTextBoxTemplateConstructor___vwsn_darkskin_MultilineTextBoxTemplate_Initialize_(this))); } @@ -28201,6 +28225,7 @@ Class (::darkskin::ProgressBarTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -28388,6 +28413,7 @@ Class (::darkskin::RadioButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_13)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -28718,6 +28744,7 @@ Class (::darkskin::RibbonGalleryTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -28988,6 +29015,7 @@ Class (::darkskin::RibbonGroupMenuTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); } (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); } @@ -29081,6 +29109,7 @@ Class (::darkskin::RibbonGroupTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->table = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"table"), ::vl::__vwsn::Box(this->table)); { ::vl::__vwsn::This(this->table)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -29105,6 +29134,7 @@ Class (::darkskin::RibbonGroupTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -29290,6 +29320,7 @@ Class (::darkskin::RibbonIconLabelTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -29396,6 +29427,7 @@ Class (::darkskin::RibbonLargeButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -29572,6 +29604,7 @@ Class (::darkskin::RibbonLargeDropdownButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -29806,6 +29839,7 @@ Class (::darkskin::RibbonLargeSplitButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_4)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -29845,6 +29879,7 @@ Class (::darkskin::RibbonLargeSplitButtonTemplateConstructor) } { (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonArrow"), ::vl::__vwsn::Box(this->buttonArrow)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); { @@ -29986,6 +30021,7 @@ Class (::darkskin::RibbonSmallButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); } @@ -30150,6 +30186,7 @@ Class (::darkskin::RibbonSmallDropdownButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); } @@ -30416,6 +30453,7 @@ Class (::darkskin::RibbonSmallIconLabelTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_4)); } (this->container = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -30529,6 +30567,7 @@ Class (::darkskin::RibbonSmallSplitButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetCellPadding(static_cast<::vl::vint>(3)); } @@ -30601,6 +30640,7 @@ Class (::darkskin::RibbonSmallSplitButtonTemplateConstructor) } { (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonArrow"), ::vl::__vwsn::Box(this->buttonArrow)); } (this->__vwsn_precompile_11 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); { @@ -30971,6 +31011,7 @@ Class (::darkskin::RibbonToolstripMenuTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Absolute; __vwsn_temp__.absolute = static_cast<::vl::vint>(4); return __vwsn_temp__; }()); } (this->content = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"content"), ::vl::__vwsn::Box(this->content)); { ::vl::__vwsn::This(this->content)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); } @@ -31006,6 +31047,7 @@ Class (::darkskin::RibbonToolstripMenuTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_8)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(2)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -31251,6 +31293,7 @@ Class (::darkskin::ScrollViewTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_2)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf280_DarkSkin_darkskin_ScrollViewTemplateConstructor___vwsn_darkskin_ScrollViewTemplate_Initialize_(this))); } @@ -31426,6 +31469,7 @@ Class (::darkskin::SinglelineTextBoxTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -31502,6 +31546,7 @@ Class (::darkskin::SystemFrameWindowTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } @@ -31817,6 +31862,7 @@ Class (::darkskin::TabTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->beforeHeadersContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"beforeHeadersContainer"), ::vl::__vwsn::Box(this->beforeHeadersContainer)); { ::vl::__vwsn::This(this->beforeHeadersContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -31824,6 +31870,7 @@ Class (::darkskin::TabTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->beforeHeadersContainer)); } (this->afterHeadersContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"afterHeadersContainer"), ::vl::__vwsn::Box(this->afterHeadersContainer)); { ::vl::__vwsn::This(this->afterHeadersContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(2), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -31835,6 +31882,7 @@ Class (::darkskin::TabTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->header = new ::vl::presentation::compositions::GuiRepeatFlowComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"header"), ::vl::__vwsn::Box(this->header)); { ::vl::__vwsn::This(this->header)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf306_DarkSkin_darkskin_TabTemplateConstructor___vwsn_darkskin_TabTemplate_Initialize_(this))); } @@ -31876,6 +31924,7 @@ Class (::darkskin::TabTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -32034,6 +32083,7 @@ Class (::darkskin::TextListTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf125_DarkSkin_darkskin_TextListTemplateConstructor___vwsn_darkskin_TextListTemplate_Initialize_(this))); } @@ -32345,6 +32395,7 @@ Class (::darkskin::ToolstripButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -32458,6 +32509,7 @@ Class (::darkskin::ToolstripDropdownButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -32626,6 +32678,7 @@ Class (::darkskin::ToolstripMenuTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -32804,6 +32857,7 @@ Class (::darkskin::ToolstripSplitButtonTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(3); __vwsn_temp__.top = static_cast<::vl::vint>(3); __vwsn_temp__.right = static_cast<::vl::vint>(3); __vwsn_temp__.bottom = static_cast<::vl::vint>(3); return __vwsn_temp__; }()); } @@ -32843,6 +32897,7 @@ Class (::darkskin::ToolstripSplitButtonTemplateConstructor) } { (this->buttonArrow = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonArrow"), ::vl::__vwsn::Box(this->buttonArrow)); } (this->__vwsn_precompile_8 = ::vl::__vwsn::This(this->buttonArrow)->GetBoundsComposition()); { @@ -33021,6 +33076,7 @@ Class (::darkskin::ToolstripTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(2); __vwsn_temp__.top = static_cast<::vl::vint>(2); __vwsn_temp__.right = static_cast<::vl::vint>(2); __vwsn_temp__.bottom = static_cast<::vl::vint>(2); return __vwsn_temp__; }()); } @@ -33091,6 +33147,7 @@ Class (::darkskin::TooltipTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->container = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"container"), ::vl::__vwsn::Box(this->container)); { ::vl::__vwsn::This(this->container)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -33248,6 +33305,7 @@ Class (::darkskin::TreeViewTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_1)); } (this->look = new ::vl::presentation::templates::GuiCommonScrollViewLook(static_cast<::vl::vint>(20))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"look"), ::vl::__vwsn::Box(this->look)); { ::vl::__vwsn::This(this->look)->SetVScrollTemplate(vl::Func(::vl_workflow_global::__vwsnf130_DarkSkin_darkskin_TreeViewTemplateConstructor___vwsn_darkskin_TreeViewTemplate_Initialize_(this))); } @@ -33378,6 +33436,7 @@ Class (::darkskin::VScrollTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"behavior"), ::vl::__vwsn::Box(this->behavior)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); } @@ -33414,6 +33473,7 @@ Class (::darkskin::VScrollTemplateConstructor) } { (this->buttonDecrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonDecrease"), ::vl::__vwsn::Box(this->buttonDecrease)); } (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->buttonDecrease)->GetBoundsComposition()); { @@ -33443,6 +33503,7 @@ Class (::darkskin::VScrollTemplateConstructor) } { (this->buttonIncrease = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonIncrease"), ::vl::__vwsn::Box(this->buttonIncrease)); } (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->buttonIncrease)->GetBoundsComposition()); { @@ -33461,6 +33522,7 @@ Class (::darkskin::VScrollTemplateConstructor) ::vl::__vwsn::This(this->self)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_5)); } (this->handleContainer = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handleContainer"), ::vl::__vwsn::Box(this->handleContainer)); { ::vl::__vwsn::This(this->handleContainer)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(20); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(20); return __vwsn_temp__; }()); } @@ -33468,6 +33530,7 @@ Class (::darkskin::VScrollTemplateConstructor) ::vl::__vwsn::This(this->handleContainer)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::NoLimit); } (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handle"), ::vl::__vwsn::Box(this->handle)); { ::vl::__vwsn::This(this->handle)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.y = static_cast<::vl::vint>(10); return __vwsn_temp__; }()); } @@ -33566,6 +33629,7 @@ Class (::darkskin::VTrackerTemplateConstructor) ::vl::__vwsn::This(this->self)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->behavior = new ::vl::presentation::templates::GuiCommonScrollBehavior()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"behavior"), ::vl::__vwsn::Box(this->behavior)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->behavior)); } @@ -33619,6 +33683,7 @@ Class (::darkskin::VTrackerTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_3)); } (this->handle = new ::vl::presentation::compositions::GuiPartialViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"handle"), ::vl::__vwsn::Box(this->handle)); { ::vl::__vwsn::This(this->handle)->SetHeightPageSize(static_cast(0)); } @@ -33763,16 +33828,19 @@ namespace vl #endif } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - List errors; - MemoryStream resourceStream; - DarkSkinResourceReader::ReadToStream(resourceStream); - resourceStream.SeekFromBegin(0); - GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + if (controllerRelatedPlugins) + { + List errors; + MemoryStream resourceStream; + DarkSkinResourceReader::ReadToStream(resourceStream); + resourceStream.SeekFromBegin(0); + GetResourceManager()->LoadResourceOrPending(resourceStream, GuiResourceUsage::InstanceClass); + } } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; diff --git a/Import/VlppGlrParser.cpp b/Import/VlppGlrParser.cpp index ff48d1d0..e59653b2 100644 --- a/Import/VlppGlrParser.cpp +++ b/Import/VlppGlrParser.cpp @@ -1327,6 +1327,83 @@ JsonUnescapeVisitor } }; +/*********************************************************************** +JsonFormatting +***********************************************************************/ + + JsonFormatting::JsonFormatting() + : indentation(L" ") + { + } + +/*********************************************************************** +JsonIsCompactVisitor +***********************************************************************/ + + class JsonIsCompactVisitorBase : public Object, public JsonNode::IVisitor + { + public: + bool result = true; + + void Visit(JsonLiteral* node) override + { + } + + void Visit(JsonString* node) override + { + } + + void Visit(JsonNumber* node) override + { + } + }; + + class JsonIsCompactFieldVisitor : public JsonIsCompactVisitorBase + { + public: + void Visit(JsonArray* node) override + { + result = node->items.Count() == 0; + } + + void Visit(JsonObject* node) override + { + result = node->fields.Count() == 0; + } + }; + + class JsonIsCompactVisitor : public JsonIsCompactVisitorBase + { + public: + void Visit(JsonArray* node) override + { + for (auto item : node->items) + { + JsonIsCompactFieldVisitor visitor; + item->Accept(&visitor); + if (!visitor.result) + { + result = false; + break; + } + } + } + + void Visit(JsonObject* node) override + { + for (auto field : node->fields) + { + JsonIsCompactFieldVisitor visitor; + field->value->Accept(&visitor); + if (!visitor.result) + { + result = false; + break; + } + } + } + }; + /*********************************************************************** JsonPrintVisitor ***********************************************************************/ @@ -1334,13 +1411,31 @@ JsonPrintVisitor class JsonPrintVisitor : public Object, public JsonNode::IVisitor { public: + JsonFormatting formatting; TextWriter& writer; + vint indent = 0; - JsonPrintVisitor(TextWriter& _writer) - :writer(_writer) + JsonPrintVisitor(JsonFormatting _formatting, TextWriter& _writer) + : formatting(_formatting) + , writer(_writer) { } + void WriteIndentation() + { + for (vint i = 0; i < indent; i++) + { + writer.WriteString(formatting.indentation); + } + } + + bool IsCompact(JsonNode* node) + { + JsonIsCompactVisitor visitor; + node->Accept(&visitor); + return visitor.result; + } + void Visit(JsonLiteral* node) override { switch(node->value) @@ -1370,13 +1465,59 @@ JsonPrintVisitor writer.WriteString(node->content.value); } + void AfterOpeningObject(bool insertCrlf) + { + if (insertCrlf) + { + writer.WriteString(L"\r\n"); + indent++; + } + } + + void BeforeClosingObject(bool insertCrlf) + { + if (insertCrlf) + { + indent--; + WriteIndentation(); + } + } + + void BeforeChildNode(bool insertCrlf) + { + if (insertCrlf) WriteIndentation(); + } + + void AfterChildNode(bool insertCrlf, bool lastNode) + { + if (!lastNode) + { + if ((!insertCrlf || !formatting.crlf) && formatting.spaceAfterComma) + { + writer.WriteString(L", "); + } + else + { + writer.WriteChar(L','); + } + } + if (insertCrlf) writer.WriteString(L"\r\n"); + } + void Visit(JsonArray* node) override { writer.WriteChar(L'['); - for (auto [item, i] : indexed(node->items)) + if (node->items.Count() > 0) { - if(i>0) writer.WriteChar(L','); - item->Accept(this); + bool insertCrlf = formatting.crlf && !(formatting.compact && IsCompact(node)); + AfterOpeningObject(insertCrlf); + for (auto [item, i] : indexed(node->items)) + { + BeforeChildNode(insertCrlf); + item->Accept(this); + AfterChildNode(insertCrlf, i == node->items.Count() - 1); + } + BeforeClosingObject(insertCrlf); } writer.WriteChar(L']'); } @@ -1384,13 +1525,27 @@ JsonPrintVisitor void Visit(JsonObject* node) override { writer.WriteChar(L'{'); - for (auto [field, i] : indexed(node->fields)) + if (node->fields.Count() > 0) { - if(i>0) writer.WriteChar(L','); - writer.WriteChar(L'\"'); - JsonEscapeString(field->name.value, writer); - writer.WriteString(L"\":"); - field->value->Accept(this); + bool insertCrlf = formatting.crlf && !(formatting.compact && IsCompact(node)); + AfterOpeningObject(insertCrlf); + for (auto [field, i] : indexed(node->fields)) + { + BeforeChildNode(insertCrlf); + writer.WriteChar(L'\"'); + JsonEscapeString(field->name.value, writer); + if (formatting.spaceAfterColon) + { + writer.WriteString(L"\": "); + } + else + { + writer.WriteString(L"\":"); + } + field->value->Accept(this); + AfterChildNode(insertCrlf, i == node->fields.Count() - 1); + } + BeforeClosingObject(insertCrlf); } writer.WriteChar(L'}'); } @@ -1407,17 +1562,17 @@ API return ast; } - void JsonPrint(Ptr node, stream::TextWriter& writer) + void JsonPrint(Ptr node, stream::TextWriter& writer, JsonFormatting formatting) { - JsonPrintVisitor visitor(writer); + JsonPrintVisitor visitor(formatting, writer); node->Accept(&visitor); } - WString JsonToString(Ptr node) + WString JsonToString(Ptr node, JsonFormatting formatting) { return GenerateToStream([&](StreamWriter& writer) { - JsonPrint(node, writer); + JsonPrint(node, writer, formatting); }); } } @@ -1876,7 +2031,7 @@ namespace vl::glr::json::json_visitor { void AstVisitor::PrintFields(JsonArray* node) { - BeginField(L"items"); + BeginField(vl::WString::Unmanaged(L"items")); BeginArray(); for (auto&& listItem : node->items) { @@ -1889,17 +2044,17 @@ namespace vl::glr::json::json_visitor } void AstVisitor::PrintFields(JsonLiteral* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); switch (node->value) { case vl::glr::json::JsonLiteralValue::False: - WriteString(L"False"); + WriteString(vl::WString::Unmanaged(L"False")); break; case vl::glr::json::JsonLiteralValue::Null: - WriteString(L"Null"); + WriteString(vl::WString::Unmanaged(L"Null")); break; case vl::glr::json::JsonLiteralValue::True: - WriteString(L"True"); + WriteString(vl::WString::Unmanaged(L"True")); break; default: WriteNull(); @@ -1911,13 +2066,13 @@ namespace vl::glr::json::json_visitor } void AstVisitor::PrintFields(JsonNumber* node) { - BeginField(L"content"); + BeginField(vl::WString::Unmanaged(L"content")); WriteToken(node->content); EndField(); } void AstVisitor::PrintFields(JsonObject* node) { - BeginField(L"fields"); + BeginField(vl::WString::Unmanaged(L"fields")); BeginArray(); for (auto&& listItem : node->fields) { @@ -1930,16 +2085,16 @@ namespace vl::glr::json::json_visitor } void AstVisitor::PrintFields(JsonObjectField* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); Print(node->value.Obj()); EndField(); } void AstVisitor::PrintFields(JsonString* node) { - BeginField(L"content"); + BeginField(vl::WString::Unmanaged(L"content")); WriteToken(node->content); EndField(); } @@ -1952,7 +2107,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"Literal", node); + WriteType(vl::WString::Unmanaged(L"Literal"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -1966,7 +2121,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"String", node); + WriteType(vl::WString::Unmanaged(L"String"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -1980,7 +2135,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"Number", node); + WriteType(vl::WString::Unmanaged(L"Number"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -1994,7 +2149,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"Array", node); + WriteType(vl::WString::Unmanaged(L"Array"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -2008,7 +2163,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"Object", node); + WriteType(vl::WString::Unmanaged(L"Object"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -2037,7 +2192,7 @@ namespace vl::glr::json::json_visitor return; } BeginObject(); - WriteType(L"ObjectField", node); + WriteType(vl::WString::Unmanaged(L"ObjectField"), node); PrintFields(static_cast(node)); EndObject(); } @@ -8114,28 +8269,28 @@ namespace vl::glr::xml::json_visitor { void AstVisitor::PrintFields(XmlAttribute* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } void AstVisitor::PrintFields(XmlCData* node) { - BeginField(L"content"); + BeginField(vl::WString::Unmanaged(L"content")); WriteToken(node->content); EndField(); } void AstVisitor::PrintFields(XmlComment* node) { - BeginField(L"content"); + BeginField(vl::WString::Unmanaged(L"content")); WriteToken(node->content); EndField(); } void AstVisitor::PrintFields(XmlDocument* node) { - BeginField(L"prologs"); + BeginField(vl::WString::Unmanaged(L"prologs")); BeginArray(); for (auto&& listItem : node->prologs) { @@ -8145,13 +8300,13 @@ namespace vl::glr::xml::json_visitor } EndArray(); EndField(); - BeginField(L"rootElement"); + BeginField(vl::WString::Unmanaged(L"rootElement")); Print(node->rootElement.Obj()); EndField(); } void AstVisitor::PrintFields(XmlElement* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -8161,13 +8316,13 @@ namespace vl::glr::xml::json_visitor } EndArray(); EndField(); - BeginField(L"closingName"); + BeginField(vl::WString::Unmanaged(L"closingName")); WriteToken(node->closingName); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"subNodes"); + BeginField(vl::WString::Unmanaged(L"subNodes")); BeginArray(); for (auto&& listItem : node->subNodes) { @@ -8180,7 +8335,7 @@ namespace vl::glr::xml::json_visitor } void AstVisitor::PrintFields(XmlInstruction* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -8190,7 +8345,7 @@ namespace vl::glr::xml::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } @@ -8199,7 +8354,7 @@ namespace vl::glr::xml::json_visitor } void AstVisitor::PrintFields(XmlText* node) { - BeginField(L"content"); + BeginField(vl::WString::Unmanaged(L"content")); WriteToken(node->content); EndField(); } @@ -8212,7 +8367,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Text", node); + WriteType(vl::WString::Unmanaged(L"Text"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8226,7 +8381,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"CData", node); + WriteType(vl::WString::Unmanaged(L"CData"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8240,7 +8395,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Comment", node); + WriteType(vl::WString::Unmanaged(L"Comment"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8254,7 +8409,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Element", node); + WriteType(vl::WString::Unmanaged(L"Element"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8268,7 +8423,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Instruction", node); + WriteType(vl::WString::Unmanaged(L"Instruction"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8282,7 +8437,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Document", node); + WriteType(vl::WString::Unmanaged(L"Document"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -8311,7 +8466,7 @@ namespace vl::glr::xml::json_visitor return; } BeginObject(); - WriteType(L"Attribute", node); + WriteType(vl::WString::Unmanaged(L"Attribute"), node); PrintFields(static_cast(node)); EndObject(); } diff --git a/Import/VlppGlrParser.h b/Import/VlppGlrParser.h index 53509f94..c53f0da6 100644 --- a/Import/VlppGlrParser.h +++ b/Import/VlppGlrParser.h @@ -1730,15 +1730,30 @@ namespace vl /// The generated parser. extern Ptr JsonParse(const WString& input, const Parser& parser); + struct JsonFormatting + { + bool spaceAfterColon = false; + bool spaceAfterComma = false; + bool crlf = false; + bool compact = false; // available when crlf == true + const wchar_t* indentation = nullptr; // available when crlf == true; + + JsonFormatting(); + JsonFormatting(const JsonFormatting&) = default; + JsonFormatting(JsonFormatting&&) = default; + JsonFormatting& operator=(const JsonFormatting&) = default; + JsonFormatting& operator=(JsonFormatting&&) = default; + }; + /// Serialize JSON to string. /// The JSON node to serialize. /// The text writer to receive the string. - extern void JsonPrint(Ptr node, stream::TextWriter& writer); + extern void JsonPrint(Ptr node, stream::TextWriter& writer, JsonFormatting formatting = {}); /// Serialize JSON to string. /// The serialized string. /// The JSON node to serialize. - extern WString JsonToString(Ptr node); + extern WString JsonToString(Ptr node, JsonFormatting formatting = {}); } } } diff --git a/Import/VlppGlrParserCompiler.cpp b/Import/VlppGlrParserCompiler.cpp index 4bd8133a..7204dfcb 100644 --- a/Import/VlppGlrParserCompiler.cpp +++ b/Import/VlppGlrParserCompiler.cpp @@ -2035,7 +2035,7 @@ WriteVisitFieldFunctionBody { for (auto propSymbol : fieldSymbol->Props().Values()) { - writer.WriteLine(prefix + L"\tBeginField(L\"" + propSymbol->Name() + L"\");"); + writer.WriteLine(prefix + L"\tBeginField(vl::WString::Unmanaged(L\"" + propSymbol->Name() + L"\"));"); switch (propSymbol->propType) { case AstPropType::Token: @@ -2061,7 +2061,7 @@ WriteVisitFieldFunctionBody writer.WriteString(prefix + L"\tcase "); PrintCppType(nullptr, enumPropSymbol, writer); writer.WriteLine(L"::" + enumItemSymbol->Name() + L":"); - writer.WriteLine(prefix + L"\t\tWriteString(L\"" + enumItemSymbol->Name() + L"\");"); + writer.WriteLine(prefix + L"\t\tWriteString(vl::WString::Unmanaged(L\"" + enumItemSymbol->Name() + L"\"));"); writer.WriteLine(prefix + L"\t\tbreak;"); } writer.WriteLine(prefix + L"\tdefault:"); @@ -2101,7 +2101,7 @@ WriteVisitFieldFunctionBody } writer.WriteLine(prefix + L"\tBeginObject();"); - writer.WriteLine(prefix + L"\tWriteType(L\"" + fieldSymbol->Name() + L"\", node);"); + writer.WriteLine(prefix + L"\tWriteType(vl::WString::Unmanaged(L\"" + fieldSymbol->Name() + L"\"), node);"); for (auto classSymbol : From(order).Reverse()) { writer.WriteString(prefix + L"\tPrintFields(static_cast<"); @@ -12050,41 +12050,41 @@ namespace vl::glr::parsergen::json_visitor { void RuleAstVisitor::PrintFields(GlrAlternativeSyntax* node) { - BeginField(L"first"); + BeginField(vl::WString::Unmanaged(L"first")); Print(node->first.Obj()); EndField(); - BeginField(L"second"); + BeginField(vl::WString::Unmanaged(L"second")); Print(node->second.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrAndCondition* node) { - BeginField(L"first"); + BeginField(vl::WString::Unmanaged(L"first")); Print(node->first.Obj()); EndField(); - BeginField(L"second"); + BeginField(vl::WString::Unmanaged(L"second")); Print(node->second.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrAssignment* node) { - BeginField(L"field"); + BeginField(vl::WString::Unmanaged(L"field")); WriteToken(node->field); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); switch (node->type) { case vl::glr::parsergen::GlrAssignmentType::Strong: - WriteString(L"Strong"); + WriteString(vl::WString::Unmanaged(L"Strong")); break; case vl::glr::parsergen::GlrAssignmentType::Weak: - WriteString(L"Weak"); + WriteString(vl::WString::Unmanaged(L"Weak")); break; default: WriteNull(); } EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } @@ -12096,7 +12096,7 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrCreateClause* node) { - BeginField(L"assignments"); + BeginField(vl::WString::Unmanaged(L"assignments")); BeginArray(); for (auto&& listItem : node->assignments) { @@ -12106,38 +12106,38 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); WriteToken(node->type); EndField(); } void RuleAstVisitor::PrintFields(GlrLeftRecursionInjectClause* node) { - BeginField(L"continuation"); + BeginField(vl::WString::Unmanaged(L"continuation")); Print(node->continuation.Obj()); EndField(); - BeginField(L"rule"); + BeginField(vl::WString::Unmanaged(L"rule")); Print(node->rule.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrLeftRecursionInjectContinuation* node) { - BeginField(L"configuration"); + BeginField(vl::WString::Unmanaged(L"configuration")); switch (node->configuration) { case vl::glr::parsergen::GlrLeftRecursionConfiguration::Multiple: - WriteString(L"Multiple"); + WriteString(vl::WString::Unmanaged(L"Multiple")); break; case vl::glr::parsergen::GlrLeftRecursionConfiguration::Single: - WriteString(L"Single"); + WriteString(vl::WString::Unmanaged(L"Single")); break; default: WriteNull(); } EndField(); - BeginField(L"flags"); + BeginField(vl::WString::Unmanaged(L"flags")); BeginArray(); for (auto&& listItem : node->flags) { @@ -12147,7 +12147,7 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"injectionTargets"); + BeginField(vl::WString::Unmanaged(L"injectionTargets")); BeginArray(); for (auto&& listItem : node->injectionTargets) { @@ -12157,14 +12157,14 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); switch (node->type) { case vl::glr::parsergen::GlrLeftRecursionInjectContinuationType::Optional: - WriteString(L"Optional"); + WriteString(vl::WString::Unmanaged(L"Optional")); break; case vl::glr::parsergen::GlrLeftRecursionInjectContinuationType::Required: - WriteString(L"Required"); + WriteString(vl::WString::Unmanaged(L"Required")); break; default: WriteNull(); @@ -12173,13 +12173,13 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrLeftRecursionPlaceholder* node) { - BeginField(L"flag"); + BeginField(vl::WString::Unmanaged(L"flag")); WriteToken(node->flag); EndField(); } void RuleAstVisitor::PrintFields(GlrLeftRecursionPlaceholderClause* node) { - BeginField(L"flags"); + BeginField(vl::WString::Unmanaged(L"flags")); BeginArray(); for (auto&& listItem : node->flags) { @@ -12192,53 +12192,53 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrLoopSyntax* node) { - BeginField(L"delimiter"); + BeginField(vl::WString::Unmanaged(L"delimiter")); Print(node->delimiter.Obj()); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrNotCondition* node) { - BeginField(L"condition"); + BeginField(vl::WString::Unmanaged(L"condition")); Print(node->condition.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrOptionalSyntax* node) { - BeginField(L"priority"); + BeginField(vl::WString::Unmanaged(L"priority")); switch (node->priority) { case vl::glr::parsergen::GlrOptionalPriority::Equal: - WriteString(L"Equal"); + WriteString(vl::WString::Unmanaged(L"Equal")); break; case vl::glr::parsergen::GlrOptionalPriority::PreferSkip: - WriteString(L"PreferSkip"); + WriteString(vl::WString::Unmanaged(L"PreferSkip")); break; case vl::glr::parsergen::GlrOptionalPriority::PreferTake: - WriteString(L"PreferTake"); + WriteString(vl::WString::Unmanaged(L"PreferTake")); break; default: WriteNull(); } EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrOrCondition* node) { - BeginField(L"first"); + BeginField(vl::WString::Unmanaged(L"first")); Print(node->first.Obj()); EndField(); - BeginField(L"second"); + BeginField(vl::WString::Unmanaged(L"second")); Print(node->second.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrPartialClause* node) { - BeginField(L"assignments"); + BeginField(vl::WString::Unmanaged(L"assignments")); BeginArray(); for (auto&& listItem : node->assignments) { @@ -12248,22 +12248,22 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); WriteToken(node->type); EndField(); } void RuleAstVisitor::PrintFields(GlrPrefixMergeClause* node) { - BeginField(L"rule"); + BeginField(vl::WString::Unmanaged(L"rule")); Print(node->rule.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrPushConditionSyntax* node) { - BeginField(L"switches"); + BeginField(vl::WString::Unmanaged(L"switches")); BeginArray(); for (auto&& listItem : node->switches) { @@ -12273,35 +12273,35 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrRefCondition* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void RuleAstVisitor::PrintFields(GlrRefSyntax* node) { - BeginField(L"field"); + BeginField(vl::WString::Unmanaged(L"field")); WriteToken(node->field); EndField(); - BeginField(L"literal"); + BeginField(vl::WString::Unmanaged(L"literal")); WriteToken(node->literal); EndField(); - BeginField(L"refType"); + BeginField(vl::WString::Unmanaged(L"refType")); switch (node->refType) { case vl::glr::parsergen::GlrRefType::ConditionalLiteral: - WriteString(L"ConditionalLiteral"); + WriteString(vl::WString::Unmanaged(L"ConditionalLiteral")); break; case vl::glr::parsergen::GlrRefType::Id: - WriteString(L"Id"); + WriteString(vl::WString::Unmanaged(L"Id")); break; case vl::glr::parsergen::GlrRefType::Literal: - WriteString(L"Literal"); + WriteString(vl::WString::Unmanaged(L"Literal")); break; default: WriteNull(); @@ -12310,7 +12310,7 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrReuseClause* node) { - BeginField(L"assignments"); + BeginField(vl::WString::Unmanaged(L"assignments")); BeginArray(); for (auto&& listItem : node->assignments) { @@ -12320,19 +12320,19 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrRule* node) { - BeginField(L"attParser"); + BeginField(vl::WString::Unmanaged(L"attParser")); WriteToken(node->attParser); EndField(); - BeginField(L"attPublic"); + BeginField(vl::WString::Unmanaged(L"attPublic")); WriteToken(node->attPublic); EndField(); - BeginField(L"clauses"); + BeginField(vl::WString::Unmanaged(L"clauses")); BeginArray(); for (auto&& listItem : node->clauses) { @@ -12342,35 +12342,35 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); WriteToken(node->type); EndField(); } void RuleAstVisitor::PrintFields(GlrSequenceSyntax* node) { - BeginField(L"first"); + BeginField(vl::WString::Unmanaged(L"first")); Print(node->first.Obj()); EndField(); - BeginField(L"second"); + BeginField(vl::WString::Unmanaged(L"second")); Print(node->second.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrSwitchItem* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); switch (node->value) { case vl::glr::parsergen::GlrSwitchValue::False: - WriteString(L"False"); + WriteString(vl::WString::Unmanaged(L"False")); break; case vl::glr::parsergen::GlrSwitchValue::True: - WriteString(L"True"); + WriteString(vl::WString::Unmanaged(L"True")); break; default: WriteNull(); @@ -12382,7 +12382,7 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrSyntaxFile* node) { - BeginField(L"rules"); + BeginField(vl::WString::Unmanaged(L"rules")); BeginArray(); for (auto&& listItem : node->rules) { @@ -12392,7 +12392,7 @@ namespace vl::glr::parsergen::json_visitor } EndArray(); EndField(); - BeginField(L"switches"); + BeginField(vl::WString::Unmanaged(L"switches")); BeginArray(); for (auto&& listItem : node->switches) { @@ -12405,16 +12405,16 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrTestConditionBranch* node) { - BeginField(L"condition"); + BeginField(vl::WString::Unmanaged(L"condition")); Print(node->condition.Obj()); EndField(); - BeginField(L"syntax"); + BeginField(vl::WString::Unmanaged(L"syntax")); Print(node->syntax.Obj()); EndField(); } void RuleAstVisitor::PrintFields(GlrTestConditionSyntax* node) { - BeginField(L"branches"); + BeginField(vl::WString::Unmanaged(L"branches")); BeginArray(); for (auto&& listItem : node->branches) { @@ -12427,7 +12427,7 @@ namespace vl::glr::parsergen::json_visitor } void RuleAstVisitor::PrintFields(GlrUseSyntax* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } @@ -12440,7 +12440,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"RefCondition", node); + WriteType(vl::WString::Unmanaged(L"RefCondition"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12454,7 +12454,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"NotCondition", node); + WriteType(vl::WString::Unmanaged(L"NotCondition"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12468,7 +12468,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"AndCondition", node); + WriteType(vl::WString::Unmanaged(L"AndCondition"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12482,7 +12482,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"OrCondition", node); + WriteType(vl::WString::Unmanaged(L"OrCondition"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12496,7 +12496,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"RefSyntax", node); + WriteType(vl::WString::Unmanaged(L"RefSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12510,7 +12510,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"UseSyntax", node); + WriteType(vl::WString::Unmanaged(L"UseSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12524,7 +12524,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"LoopSyntax", node); + WriteType(vl::WString::Unmanaged(L"LoopSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12538,7 +12538,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"OptionalSyntax", node); + WriteType(vl::WString::Unmanaged(L"OptionalSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12552,7 +12552,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"SequenceSyntax", node); + WriteType(vl::WString::Unmanaged(L"SequenceSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12566,7 +12566,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"AlternativeSyntax", node); + WriteType(vl::WString::Unmanaged(L"AlternativeSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12580,7 +12580,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"PushConditionSyntax", node); + WriteType(vl::WString::Unmanaged(L"PushConditionSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12594,7 +12594,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"TestConditionSyntax", node); + WriteType(vl::WString::Unmanaged(L"TestConditionSyntax"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12608,7 +12608,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"CreateClause", node); + WriteType(vl::WString::Unmanaged(L"CreateClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12622,7 +12622,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"PartialClause", node); + WriteType(vl::WString::Unmanaged(L"PartialClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12636,7 +12636,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"ReuseClause", node); + WriteType(vl::WString::Unmanaged(L"ReuseClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12650,7 +12650,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"LeftRecursionPlaceholderClause", node); + WriteType(vl::WString::Unmanaged(L"LeftRecursionPlaceholderClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12664,7 +12664,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"LeftRecursionInjectClause", node); + WriteType(vl::WString::Unmanaged(L"LeftRecursionInjectClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12678,7 +12678,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"PrefixMergeClause", node); + WriteType(vl::WString::Unmanaged(L"PrefixMergeClause"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -12727,7 +12727,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"SwitchItem", node); + WriteType(vl::WString::Unmanaged(L"SwitchItem"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12740,7 +12740,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"TestConditionBranch", node); + WriteType(vl::WString::Unmanaged(L"TestConditionBranch"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12753,7 +12753,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"Assignment", node); + WriteType(vl::WString::Unmanaged(L"Assignment"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12766,7 +12766,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"LeftRecursionPlaceholder", node); + WriteType(vl::WString::Unmanaged(L"LeftRecursionPlaceholder"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12779,7 +12779,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"LeftRecursionInjectContinuation", node); + WriteType(vl::WString::Unmanaged(L"LeftRecursionInjectContinuation"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12792,7 +12792,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"Rule", node); + WriteType(vl::WString::Unmanaged(L"Rule"), node); PrintFields(static_cast(node)); EndObject(); } @@ -12805,7 +12805,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"SyntaxFile", node); + WriteType(vl::WString::Unmanaged(L"SyntaxFile"), node); PrintFields(static_cast(node)); EndObject(); } @@ -14039,7 +14039,7 @@ namespace vl::glr::parsergen::json_visitor { void TypeAstVisitor::PrintFields(GlrAstFile* node) { - BeginField(L"types"); + BeginField(vl::WString::Unmanaged(L"types")); BeginArray(); for (auto&& listItem : node->types) { @@ -14052,13 +14052,13 @@ namespace vl::glr::parsergen::json_visitor } void TypeAstVisitor::PrintFields(GlrClass* node) { - BeginField(L"attAmbiguous"); + BeginField(vl::WString::Unmanaged(L"attAmbiguous")); WriteToken(node->attAmbiguous); EndField(); - BeginField(L"baseClass"); + BeginField(vl::WString::Unmanaged(L"baseClass")); WriteToken(node->baseClass); EndField(); - BeginField(L"props"); + BeginField(vl::WString::Unmanaged(L"props")); BeginArray(); for (auto&& listItem : node->props) { @@ -14071,32 +14071,32 @@ namespace vl::glr::parsergen::json_visitor } void TypeAstVisitor::PrintFields(GlrClassProp* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"propType"); + BeginField(vl::WString::Unmanaged(L"propType")); switch (node->propType) { case vl::glr::parsergen::GlrPropType::Array: - WriteString(L"Array"); + WriteString(vl::WString::Unmanaged(L"Array")); break; case vl::glr::parsergen::GlrPropType::Token: - WriteString(L"Token"); + WriteString(vl::WString::Unmanaged(L"Token")); break; case vl::glr::parsergen::GlrPropType::Type: - WriteString(L"Type"); + WriteString(vl::WString::Unmanaged(L"Type")); break; default: WriteNull(); } EndField(); - BeginField(L"propTypeName"); + BeginField(vl::WString::Unmanaged(L"propTypeName")); WriteToken(node->propTypeName); EndField(); } void TypeAstVisitor::PrintFields(GlrEnum* node) { - BeginField(L"items"); + BeginField(vl::WString::Unmanaged(L"items")); BeginArray(); for (auto&& listItem : node->items) { @@ -14109,16 +14109,16 @@ namespace vl::glr::parsergen::json_visitor } void TypeAstVisitor::PrintFields(GlrEnumItem* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void TypeAstVisitor::PrintFields(GlrType* node) { - BeginField(L"attPublic"); + BeginField(vl::WString::Unmanaged(L"attPublic")); WriteToken(node->attPublic); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } @@ -14131,7 +14131,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"Enum", node); + WriteType(vl::WString::Unmanaged(L"Enum"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -14145,7 +14145,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"Class", node); + WriteType(vl::WString::Unmanaged(L"Class"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -14174,7 +14174,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"EnumItem", node); + WriteType(vl::WString::Unmanaged(L"EnumItem"), node); PrintFields(static_cast(node)); EndObject(); } @@ -14187,7 +14187,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"ClassProp", node); + WriteType(vl::WString::Unmanaged(L"ClassProp"), node); PrintFields(static_cast(node)); EndObject(); } @@ -14200,7 +14200,7 @@ namespace vl::glr::parsergen::json_visitor return; } BeginObject(); - WriteType(L"AstFile", node); + WriteType(vl::WString::Unmanaged(L"AstFile"), node); PrintFields(static_cast(node)); EndObject(); } diff --git a/Import/VlppOS.cpp b/Import/VlppOS.cpp index 1970f3f2..34feae2d 100644 --- a/Import/VlppOS.cpp +++ b/Import/VlppOS.cpp @@ -1947,7 +1947,8 @@ UtfGeneralEncoder CHECK_FAIL(L"UtfGeneralEncoder::Write(void*, vint)#Failed to write a complete string."); } } - availableChars = reader.SourceCluster().index; + auto cluster = reader.SourceCluster(); + availableChars = cluster.index + cluster.size; availableBytes = availableChars * sizeof(TExpect); } @@ -2010,13 +2011,13 @@ UtfGeneralDecoder { TExpect c = reader.Read(); if (!c) break; - ((TExpect*)_buffer)[i] = c; + *((TExpect*)writing) = c; + writing += sizeof(TExpect); readBytes += sizeof(TExpect); } if (readBytes == 0) break; filledBytes += readBytes; _size -= readBytes; - writing += readBytes; } // cache the remaining TExpect diff --git a/Import/VlppWorkflowCompiler.cpp b/Import/VlppWorkflowCompiler.cpp index 7ff77cc3..0ebe2143 100644 --- a/Import/VlppWorkflowCompiler.cpp +++ b/Import/VlppWorkflowCompiler.cpp @@ -35651,79 +35651,79 @@ namespace vl::workflow::json_visitor { void AstVisitor::PrintFields(WfAttachEventExpression* node) { - BeginField(L"event"); + BeginField(vl::WString::Unmanaged(L"event")); Print(node->event.Obj()); EndField(); - BeginField(L"function"); + BeginField(vl::WString::Unmanaged(L"function")); Print(node->function.Obj()); EndField(); } void AstVisitor::PrintFields(WfAttribute* node) { - BeginField(L"category"); + BeginField(vl::WString::Unmanaged(L"category")); WriteToken(node->category); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); Print(node->value.Obj()); EndField(); } void AstVisitor::PrintFields(WfAutoPropertyDeclaration* node) { - BeginField(L"configConst"); + BeginField(vl::WString::Unmanaged(L"configConst")); switch (node->configConst) { case vl::workflow::WfAPConst::Readonly: - WriteString(L"Readonly"); + WriteString(vl::WString::Unmanaged(L"Readonly")); break; case vl::workflow::WfAPConst::Writable: - WriteString(L"Writable"); + WriteString(vl::WString::Unmanaged(L"Writable")); break; default: WriteNull(); } EndField(); - BeginField(L"configObserve"); + BeginField(vl::WString::Unmanaged(L"configObserve")); switch (node->configObserve) { case vl::workflow::WfAPObserve::NotObservable: - WriteString(L"NotObservable"); + WriteString(vl::WString::Unmanaged(L"NotObservable")); break; case vl::workflow::WfAPObserve::Observable: - WriteString(L"Observable"); + WriteString(vl::WString::Unmanaged(L"Observable")); break; default: WriteNull(); } EndField(); - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"functionKind"); + BeginField(vl::WString::Unmanaged(L"functionKind")); switch (node->functionKind) { case vl::workflow::WfFunctionKind::Normal: - WriteString(L"Normal"); + WriteString(vl::WString::Unmanaged(L"Normal")); break; case vl::workflow::WfFunctionKind::Override: - WriteString(L"Override"); + WriteString(vl::WString::Unmanaged(L"Override")); break; case vl::workflow::WfFunctionKind::Static: - WriteString(L"Static"); + WriteString(vl::WString::Unmanaged(L"Static")); break; default: WriteNull(); } EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfBaseConstructorCall* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -35733,104 +35733,104 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfBinaryExpression* node) { - BeginField(L"first"); + BeginField(vl::WString::Unmanaged(L"first")); Print(node->first.Obj()); EndField(); - BeginField(L"op"); + BeginField(vl::WString::Unmanaged(L"op")); switch (node->op) { case vl::workflow::WfBinaryOperator::Add: - WriteString(L"Add"); + WriteString(vl::WString::Unmanaged(L"Add")); break; case vl::workflow::WfBinaryOperator::And: - WriteString(L"And"); + WriteString(vl::WString::Unmanaged(L"And")); break; case vl::workflow::WfBinaryOperator::Assign: - WriteString(L"Assign"); + WriteString(vl::WString::Unmanaged(L"Assign")); break; case vl::workflow::WfBinaryOperator::Div: - WriteString(L"Div"); + WriteString(vl::WString::Unmanaged(L"Div")); break; case vl::workflow::WfBinaryOperator::EQ: - WriteString(L"EQ"); + WriteString(vl::WString::Unmanaged(L"EQ")); break; case vl::workflow::WfBinaryOperator::Exp: - WriteString(L"Exp"); + WriteString(vl::WString::Unmanaged(L"Exp")); break; case vl::workflow::WfBinaryOperator::FailedThen: - WriteString(L"FailedThen"); + WriteString(vl::WString::Unmanaged(L"FailedThen")); break; case vl::workflow::WfBinaryOperator::FlagAnd: - WriteString(L"FlagAnd"); + WriteString(vl::WString::Unmanaged(L"FlagAnd")); break; case vl::workflow::WfBinaryOperator::FlagOr: - WriteString(L"FlagOr"); + WriteString(vl::WString::Unmanaged(L"FlagOr")); break; case vl::workflow::WfBinaryOperator::GE: - WriteString(L"GE"); + WriteString(vl::WString::Unmanaged(L"GE")); break; case vl::workflow::WfBinaryOperator::GT: - WriteString(L"GT"); + WriteString(vl::WString::Unmanaged(L"GT")); break; case vl::workflow::WfBinaryOperator::Index: - WriteString(L"Index"); + WriteString(vl::WString::Unmanaged(L"Index")); break; case vl::workflow::WfBinaryOperator::LE: - WriteString(L"LE"); + WriteString(vl::WString::Unmanaged(L"LE")); break; case vl::workflow::WfBinaryOperator::LT: - WriteString(L"LT"); + WriteString(vl::WString::Unmanaged(L"LT")); break; case vl::workflow::WfBinaryOperator::Mod: - WriteString(L"Mod"); + WriteString(vl::WString::Unmanaged(L"Mod")); break; case vl::workflow::WfBinaryOperator::Mul: - WriteString(L"Mul"); + WriteString(vl::WString::Unmanaged(L"Mul")); break; case vl::workflow::WfBinaryOperator::NE: - WriteString(L"NE"); + WriteString(vl::WString::Unmanaged(L"NE")); break; case vl::workflow::WfBinaryOperator::Or: - WriteString(L"Or"); + WriteString(vl::WString::Unmanaged(L"Or")); break; case vl::workflow::WfBinaryOperator::Shl: - WriteString(L"Shl"); + WriteString(vl::WString::Unmanaged(L"Shl")); break; case vl::workflow::WfBinaryOperator::Shr: - WriteString(L"Shr"); + WriteString(vl::WString::Unmanaged(L"Shr")); break; case vl::workflow::WfBinaryOperator::Sub: - WriteString(L"Sub"); + WriteString(vl::WString::Unmanaged(L"Sub")); break; case vl::workflow::WfBinaryOperator::Xor: - WriteString(L"Xor"); + WriteString(vl::WString::Unmanaged(L"Xor")); break; default: WriteNull(); } EndField(); - BeginField(L"second"); + BeginField(vl::WString::Unmanaged(L"second")); Print(node->second.Obj()); EndField(); } void AstVisitor::PrintFields(WfBindExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfBlockStatement* node) { - BeginField(L"endLabel"); + BeginField(vl::WString::Unmanaged(L"endLabel")); WriteToken(node->endLabel); EndField(); - BeginField(L"statements"); + BeginField(vl::WString::Unmanaged(L"statements")); BeginArray(); for (auto&& listItem : node->statements) { @@ -35846,7 +35846,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfCallExpression* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -35856,40 +35856,40 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"function"); + BeginField(vl::WString::Unmanaged(L"function")); Print(node->function.Obj()); EndField(); } void AstVisitor::PrintFields(WfCastResultInterfaceDeclaration* node) { - BeginField(L"baseType"); + BeginField(vl::WString::Unmanaged(L"baseType")); Print(node->baseType.Obj()); EndField(); - BeginField(L"elementType"); + BeginField(vl::WString::Unmanaged(L"elementType")); Print(node->elementType.Obj()); EndField(); } void AstVisitor::PrintFields(WfChildExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"parent"); + BeginField(vl::WString::Unmanaged(L"parent")); Print(node->parent.Obj()); EndField(); } void AstVisitor::PrintFields(WfChildType* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"parent"); + BeginField(vl::WString::Unmanaged(L"parent")); Print(node->parent.Obj()); EndField(); } void AstVisitor::PrintFields(WfClassDeclaration* node) { - BeginField(L"baseTypes"); + BeginField(vl::WString::Unmanaged(L"baseTypes")); BeginArray(); for (auto&& listItem : node->baseTypes) { @@ -35899,23 +35899,23 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"constructorType"); + BeginField(vl::WString::Unmanaged(L"constructorType")); switch (node->constructorType) { case vl::workflow::WfConstructorType::RawPtr: - WriteString(L"RawPtr"); + WriteString(vl::WString::Unmanaged(L"RawPtr")); break; case vl::workflow::WfConstructorType::SharedPtr: - WriteString(L"SharedPtr"); + WriteString(vl::WString::Unmanaged(L"SharedPtr")); break; case vl::workflow::WfConstructorType::Undefined: - WriteString(L"Undefined"); + WriteString(vl::WString::Unmanaged(L"Undefined")); break; default: WriteNull(); } EndField(); - BeginField(L"declarations"); + BeginField(vl::WString::Unmanaged(L"declarations")); BeginArray(); for (auto&& listItem : node->declarations) { @@ -35925,14 +35925,14 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"kind"); + BeginField(vl::WString::Unmanaged(L"kind")); switch (node->kind) { case vl::workflow::WfClassKind::Class: - WriteString(L"Class"); + WriteString(vl::WString::Unmanaged(L"Class")); break; case vl::workflow::WfClassKind::Interface: - WriteString(L"Interface"); + WriteString(vl::WString::Unmanaged(L"Interface")); break; default: WriteNull(); @@ -35941,13 +35941,13 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfCoOperatorExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfCoOperatorStatement* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -35957,40 +35957,40 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"opName"); + BeginField(vl::WString::Unmanaged(L"opName")); WriteToken(node->opName); EndField(); - BeginField(L"varName"); + BeginField(vl::WString::Unmanaged(L"varName")); WriteToken(node->varName); EndField(); } void AstVisitor::PrintFields(WfCoPauseStatement* node) { - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfCoProviderStatement* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfConstructorArgument* node) { - BeginField(L"key"); + BeginField(vl::WString::Unmanaged(L"key")); Print(node->key.Obj()); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); Print(node->value.Obj()); EndField(); } void AstVisitor::PrintFields(WfConstructorDeclaration* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36000,7 +36000,7 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"baseConstructorCalls"); + BeginField(vl::WString::Unmanaged(L"baseConstructorCalls")); BeginArray(); for (auto&& listItem : node->baseConstructorCalls) { @@ -36010,29 +36010,29 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"constructorType"); + BeginField(vl::WString::Unmanaged(L"constructorType")); switch (node->constructorType) { case vl::workflow::WfConstructorType::RawPtr: - WriteString(L"RawPtr"); + WriteString(vl::WString::Unmanaged(L"RawPtr")); break; case vl::workflow::WfConstructorType::SharedPtr: - WriteString(L"SharedPtr"); + WriteString(vl::WString::Unmanaged(L"SharedPtr")); break; case vl::workflow::WfConstructorType::Undefined: - WriteString(L"Undefined"); + WriteString(vl::WString::Unmanaged(L"Undefined")); break; default: WriteNull(); } EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfConstructorExpression* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36051,7 +36051,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfDeclaration* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -36061,34 +36061,34 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfDeleteStatement* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfDestructorDeclaration* node) { - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfDetachEventExpression* node) { - BeginField(L"event"); + BeginField(vl::WString::Unmanaged(L"event")); Print(node->event.Obj()); EndField(); - BeginField(L"handler"); + BeginField(vl::WString::Unmanaged(L"handler")); Print(node->handler.Obj()); EndField(); } void AstVisitor::PrintFields(WfEnumDeclaration* node) { - BeginField(L"items"); + BeginField(vl::WString::Unmanaged(L"items")); BeginArray(); for (auto&& listItem : node->items) { @@ -36098,14 +36098,14 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"kind"); + BeginField(vl::WString::Unmanaged(L"kind")); switch (node->kind) { case vl::workflow::WfEnumKind::Flag: - WriteString(L"Flag"); + WriteString(vl::WString::Unmanaged(L"Flag")); break; case vl::workflow::WfEnumKind::Normal: - WriteString(L"Normal"); + WriteString(vl::WString::Unmanaged(L"Normal")); break; default: WriteNull(); @@ -36114,7 +36114,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfEnumItem* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -36124,7 +36124,7 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"intersections"); + BeginField(vl::WString::Unmanaged(L"intersections")); BeginArray(); for (auto&& listItem : node->intersections) { @@ -36134,41 +36134,41 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"kind"); + BeginField(vl::WString::Unmanaged(L"kind")); switch (node->kind) { case vl::workflow::WfEnumItemKind::Constant: - WriteString(L"Constant"); + WriteString(vl::WString::Unmanaged(L"Constant")); break; case vl::workflow::WfEnumItemKind::Intersection: - WriteString(L"Intersection"); + WriteString(vl::WString::Unmanaged(L"Intersection")); break; default: WriteNull(); } EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"number"); + BeginField(vl::WString::Unmanaged(L"number")); WriteToken(node->number); EndField(); } void AstVisitor::PrintFields(WfEnumItemIntersection* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfEnumerableType* node) { - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); } void AstVisitor::PrintFields(WfEventDeclaration* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36181,17 +36181,17 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfExpectedTypeCastExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"strategy"); + BeginField(vl::WString::Unmanaged(L"strategy")); switch (node->strategy) { case vl::workflow::WfTypeCastingStrategy::Strong: - WriteString(L"Strong"); + WriteString(vl::WString::Unmanaged(L"Strong")); break; case vl::workflow::WfTypeCastingStrategy::Weak: - WriteString(L"Weak"); + WriteString(vl::WString::Unmanaged(L"Weak")); break; default: WriteNull(); @@ -36203,50 +36203,50 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfExpressionStatement* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfFloatingExpression* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } void AstVisitor::PrintFields(WfForEachStatement* node) { - BeginField(L"collection"); + BeginField(vl::WString::Unmanaged(L"collection")); Print(node->collection.Obj()); EndField(); - BeginField(L"direction"); + BeginField(vl::WString::Unmanaged(L"direction")); switch (node->direction) { case vl::workflow::WfForEachDirection::Normal: - WriteString(L"Normal"); + WriteString(vl::WString::Unmanaged(L"Normal")); break; case vl::workflow::WfForEachDirection::Reversed: - WriteString(L"Reversed"); + WriteString(vl::WString::Unmanaged(L"Reversed")); break; default: WriteNull(); } EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfFormatExpression* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } void AstVisitor::PrintFields(WfFunctionArgument* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -36256,29 +36256,29 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfFunctionDeclaration* node) { - BeginField(L"anonymity"); + BeginField(vl::WString::Unmanaged(L"anonymity")); switch (node->anonymity) { case vl::workflow::WfFunctionAnonymity::Anonymous: - WriteString(L"Anonymous"); + WriteString(vl::WString::Unmanaged(L"Anonymous")); break; case vl::workflow::WfFunctionAnonymity::Named: - WriteString(L"Named"); + WriteString(vl::WString::Unmanaged(L"Named")); break; default: WriteNull(); } EndField(); - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36288,38 +36288,38 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"functionKind"); + BeginField(vl::WString::Unmanaged(L"functionKind")); switch (node->functionKind) { case vl::workflow::WfFunctionKind::Normal: - WriteString(L"Normal"); + WriteString(vl::WString::Unmanaged(L"Normal")); break; case vl::workflow::WfFunctionKind::Override: - WriteString(L"Override"); + WriteString(vl::WString::Unmanaged(L"Override")); break; case vl::workflow::WfFunctionKind::Static: - WriteString(L"Static"); + WriteString(vl::WString::Unmanaged(L"Static")); break; default: WriteNull(); } EndField(); - BeginField(L"returnType"); + BeginField(vl::WString::Unmanaged(L"returnType")); Print(node->returnType.Obj()); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfFunctionExpression* node) { - BeginField(L"function"); + BeginField(vl::WString::Unmanaged(L"function")); Print(node->function.Obj()); EndField(); } void AstVisitor::PrintFields(WfFunctionType* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36329,67 +36329,67 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"result"); + BeginField(vl::WString::Unmanaged(L"result")); Print(node->result.Obj()); EndField(); } void AstVisitor::PrintFields(WfGotoStatement* node) { - BeginField(L"label"); + BeginField(vl::WString::Unmanaged(L"label")); WriteToken(node->label); EndField(); } void AstVisitor::PrintFields(WfIfExpression* node) { - BeginField(L"condition"); + BeginField(vl::WString::Unmanaged(L"condition")); Print(node->condition.Obj()); EndField(); - BeginField(L"falseBranch"); + BeginField(vl::WString::Unmanaged(L"falseBranch")); Print(node->falseBranch.Obj()); EndField(); - BeginField(L"trueBranch"); + BeginField(vl::WString::Unmanaged(L"trueBranch")); Print(node->trueBranch.Obj()); EndField(); } void AstVisitor::PrintFields(WfIfStatement* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"falseBranch"); + BeginField(vl::WString::Unmanaged(L"falseBranch")); Print(node->falseBranch.Obj()); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"trueBranch"); + BeginField(vl::WString::Unmanaged(L"trueBranch")); Print(node->trueBranch.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfInferExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfIntegerExpression* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } void AstVisitor::PrintFields(WfLetExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"variables"); + BeginField(vl::WString::Unmanaged(L"variables")); BeginArray(); for (auto&& listItem : node->variables) { @@ -36402,26 +36402,26 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfLetVariable* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); Print(node->value.Obj()); EndField(); } void AstVisitor::PrintFields(WfLiteralExpression* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); switch (node->value) { case vl::workflow::WfLiteralValue::False: - WriteString(L"False"); + WriteString(vl::WString::Unmanaged(L"False")); break; case vl::workflow::WfLiteralValue::Null: - WriteString(L"Null"); + WriteString(vl::WString::Unmanaged(L"Null")); break; case vl::workflow::WfLiteralValue::True: - WriteString(L"True"); + WriteString(vl::WString::Unmanaged(L"True")); break; default: WriteNull(); @@ -36430,20 +36430,20 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfMapType* node) { - BeginField(L"key"); + BeginField(vl::WString::Unmanaged(L"key")); Print(node->key.Obj()); EndField(); - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); Print(node->value.Obj()); EndField(); - BeginField(L"writability"); + BeginField(vl::WString::Unmanaged(L"writability")); switch (node->writability) { case vl::workflow::WfMapWritability::Readonly: - WriteString(L"Readonly"); + WriteString(vl::WString::Unmanaged(L"Readonly")); break; case vl::workflow::WfMapWritability::Writable: - WriteString(L"Writable"); + WriteString(vl::WString::Unmanaged(L"Writable")); break; default: WriteNull(); @@ -36452,25 +36452,25 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfMemberExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"parent"); + BeginField(vl::WString::Unmanaged(L"parent")); Print(node->parent.Obj()); EndField(); } void AstVisitor::PrintFields(WfMixinCastExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfModule* node) { - BeginField(L"declarations"); + BeginField(vl::WString::Unmanaged(L"declarations")); BeginArray(); for (auto&& listItem : node->declarations) { @@ -36480,23 +36480,23 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"moduleType"); + BeginField(vl::WString::Unmanaged(L"moduleType")); switch (node->moduleType) { case vl::workflow::WfModuleType::Module: - WriteString(L"Module"); + WriteString(vl::WString::Unmanaged(L"Module")); break; case vl::workflow::WfModuleType::Unit: - WriteString(L"Unit"); + WriteString(vl::WString::Unmanaged(L"Unit")); break; default: WriteNull(); } EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"paths"); + BeginField(vl::WString::Unmanaged(L"paths")); BeginArray(); for (auto&& listItem : node->paths) { @@ -36512,7 +36512,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfModuleUsingItem* node) { - BeginField(L"fragments"); + BeginField(vl::WString::Unmanaged(L"fragments")); BeginArray(); for (auto&& listItem : node->fragments) { @@ -36525,13 +36525,13 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfModuleUsingNameFragment* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfModuleUsingPath* node) { - BeginField(L"items"); + BeginField(vl::WString::Unmanaged(L"items")); BeginArray(); for (auto&& listItem : node->items) { @@ -36547,7 +36547,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfNamespaceDeclaration* node) { - BeginField(L"declarations"); + BeginField(vl::WString::Unmanaged(L"declarations")); BeginArray(); for (auto&& listItem : node->declarations) { @@ -36560,7 +36560,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfNewClassExpression* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36570,22 +36570,22 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfNewCoroutineExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfNewInterfaceExpression* node) { - BeginField(L"declarations"); + BeginField(vl::WString::Unmanaged(L"declarations")); BeginArray(); for (auto&& listItem : node->declarations) { @@ -36595,25 +36595,25 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfNullableType* node) { - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); } void AstVisitor::PrintFields(WfObservableListType* node) { - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); } void AstVisitor::PrintFields(WfObserveExpression* node) { - BeginField(L"events"); + BeginField(vl::WString::Unmanaged(L"events")); BeginArray(); for (auto&& listItem : node->events) { @@ -36623,75 +36623,75 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"observeType"); + BeginField(vl::WString::Unmanaged(L"observeType")); switch (node->observeType) { case vl::workflow::WfObserveType::ExtendedObserve: - WriteString(L"ExtendedObserve"); + WriteString(vl::WString::Unmanaged(L"ExtendedObserve")); break; case vl::workflow::WfObserveType::SimpleObserve: - WriteString(L"SimpleObserve"); + WriteString(vl::WString::Unmanaged(L"SimpleObserve")); break; default: WriteNull(); } EndField(); - BeginField(L"parent"); + BeginField(vl::WString::Unmanaged(L"parent")); Print(node->parent.Obj()); EndField(); } void AstVisitor::PrintFields(WfOrderedLambdaExpression* node) { - BeginField(L"body"); + BeginField(vl::WString::Unmanaged(L"body")); Print(node->body.Obj()); EndField(); } void AstVisitor::PrintFields(WfOrderedNameExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfPredefinedType* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); switch (node->name) { case vl::workflow::WfPredefinedTypeName::Bool: - WriteString(L"Bool"); + WriteString(vl::WString::Unmanaged(L"Bool")); break; case vl::workflow::WfPredefinedTypeName::Char: - WriteString(L"Char"); + WriteString(vl::WString::Unmanaged(L"Char")); break; case vl::workflow::WfPredefinedTypeName::Double: - WriteString(L"Double"); + WriteString(vl::WString::Unmanaged(L"Double")); break; case vl::workflow::WfPredefinedTypeName::Float: - WriteString(L"Float"); + WriteString(vl::WString::Unmanaged(L"Float")); break; case vl::workflow::WfPredefinedTypeName::Int: - WriteString(L"Int"); + WriteString(vl::WString::Unmanaged(L"Int")); break; case vl::workflow::WfPredefinedTypeName::Interface: - WriteString(L"Interface"); + WriteString(vl::WString::Unmanaged(L"Interface")); break; case vl::workflow::WfPredefinedTypeName::Object: - WriteString(L"Object"); + WriteString(vl::WString::Unmanaged(L"Object")); break; case vl::workflow::WfPredefinedTypeName::String: - WriteString(L"String"); + WriteString(vl::WString::Unmanaged(L"String")); break; case vl::workflow::WfPredefinedTypeName::UInt: - WriteString(L"UInt"); + WriteString(vl::WString::Unmanaged(L"UInt")); break; case vl::workflow::WfPredefinedTypeName::Void: - WriteString(L"Void"); + WriteString(vl::WString::Unmanaged(L"Void")); break; default: WriteNull(); @@ -36700,54 +36700,54 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfPropertyDeclaration* node) { - BeginField(L"getter"); + BeginField(vl::WString::Unmanaged(L"getter")); WriteToken(node->getter); EndField(); - BeginField(L"setter"); + BeginField(vl::WString::Unmanaged(L"setter")); WriteToken(node->setter); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); - BeginField(L"valueChangedEvent"); + BeginField(vl::WString::Unmanaged(L"valueChangedEvent")); WriteToken(node->valueChangedEvent); EndField(); } void AstVisitor::PrintFields(WfRaiseExceptionStatement* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfRangeExpression* node) { - BeginField(L"begin"); + BeginField(vl::WString::Unmanaged(L"begin")); Print(node->begin.Obj()); EndField(); - BeginField(L"beginBoundary"); + BeginField(vl::WString::Unmanaged(L"beginBoundary")); switch (node->beginBoundary) { case vl::workflow::WfRangeBoundary::Exclusive: - WriteString(L"Exclusive"); + WriteString(vl::WString::Unmanaged(L"Exclusive")); break; case vl::workflow::WfRangeBoundary::Inclusive: - WriteString(L"Inclusive"); + WriteString(vl::WString::Unmanaged(L"Inclusive")); break; default: WriteNull(); } EndField(); - BeginField(L"end"); + BeginField(vl::WString::Unmanaged(L"end")); Print(node->end.Obj()); EndField(); - BeginField(L"endBoundary"); + BeginField(vl::WString::Unmanaged(L"endBoundary")); switch (node->endBoundary) { case vl::workflow::WfRangeBoundary::Exclusive: - WriteString(L"Exclusive"); + WriteString(vl::WString::Unmanaged(L"Exclusive")); break; case vl::workflow::WfRangeBoundary::Inclusive: - WriteString(L"Inclusive"); + WriteString(vl::WString::Unmanaged(L"Inclusive")); break; default: WriteNull(); @@ -36756,44 +36756,44 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfRawPointerType* node) { - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); } void AstVisitor::PrintFields(WfReferenceExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfReferenceType* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfReturnStatement* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfSetTestingExpression* node) { - BeginField(L"collection"); + BeginField(vl::WString::Unmanaged(L"collection")); Print(node->collection.Obj()); EndField(); - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); - BeginField(L"test"); + BeginField(vl::WString::Unmanaged(L"test")); switch (node->test) { case vl::workflow::WfSetTesting::In: - WriteString(L"In"); + WriteString(vl::WString::Unmanaged(L"In")); break; case vl::workflow::WfSetTesting::NotIn: - WriteString(L"NotIn"); + WriteString(vl::WString::Unmanaged(L"NotIn")); break; default: WriteNull(); @@ -36802,13 +36802,13 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfSharedPointerType* node) { - BeginField(L"element"); + BeginField(vl::WString::Unmanaged(L"element")); Print(node->element.Obj()); EndField(); } void AstVisitor::PrintFields(WfStateDeclaration* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36818,16 +36818,16 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfStateInput* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36837,13 +36837,13 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfStateInvokeStatement* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36853,17 +36853,17 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); switch (node->type) { case vl::workflow::WfStateInvokeType::Goto: - WriteString(L"Goto"); + WriteString(vl::WString::Unmanaged(L"Goto")); break; case vl::workflow::WfStateInvokeType::Push: - WriteString(L"Push"); + WriteString(vl::WString::Unmanaged(L"Push")); break; default: WriteNull(); @@ -36872,7 +36872,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfStateMachineDeclaration* node) { - BeginField(L"inputs"); + BeginField(vl::WString::Unmanaged(L"inputs")); BeginArray(); for (auto&& listItem : node->inputs) { @@ -36882,7 +36882,7 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"states"); + BeginField(vl::WString::Unmanaged(L"states")); BeginArray(); for (auto&& listItem : node->states) { @@ -36898,13 +36898,13 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfStateSwitchArgument* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfStateSwitchCase* node) { - BeginField(L"arguments"); + BeginField(vl::WString::Unmanaged(L"arguments")); BeginArray(); for (auto&& listItem : node->arguments) { @@ -36914,16 +36914,16 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfStateSwitchStatement* node) { - BeginField(L"caseBranches"); + BeginField(vl::WString::Unmanaged(L"caseBranches")); BeginArray(); for (auto&& listItem : node->caseBranches) { @@ -36933,23 +36933,23 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); switch (node->type) { case vl::workflow::WfStateSwitchType::Default: - WriteString(L"Default"); + WriteString(vl::WString::Unmanaged(L"Default")); break; case vl::workflow::WfStateSwitchType::Ignore: - WriteString(L"Ignore"); + WriteString(vl::WString::Unmanaged(L"Ignore")); break; case vl::workflow::WfStateSwitchType::IgnoreAndReturn: - WriteString(L"IgnoreAndReturn"); + WriteString(vl::WString::Unmanaged(L"IgnoreAndReturn")); break; case vl::workflow::WfStateSwitchType::Pass: - WriteString(L"Pass"); + WriteString(vl::WString::Unmanaged(L"Pass")); break; case vl::workflow::WfStateSwitchType::PassAndReturn: - WriteString(L"PassAndReturn"); + WriteString(vl::WString::Unmanaged(L"PassAndReturn")); break; default: WriteNull(); @@ -36961,19 +36961,19 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfStaticInitDeclaration* node) { - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfStringExpression* node) { - BeginField(L"value"); + BeginField(vl::WString::Unmanaged(L"value")); WriteToken(node->value); EndField(); } void AstVisitor::PrintFields(WfStructDeclaration* node) { - BeginField(L"members"); + BeginField(vl::WString::Unmanaged(L"members")); BeginArray(); for (auto&& listItem : node->members) { @@ -36986,7 +36986,7 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfStructMember* node) { - BeginField(L"attributes"); + BeginField(vl::WString::Unmanaged(L"attributes")); BeginArray(); for (auto&& listItem : node->attributes) { @@ -36996,25 +36996,25 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfSwitchCase* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } void AstVisitor::PrintFields(WfSwitchStatement* node) { - BeginField(L"caseBranches"); + BeginField(vl::WString::Unmanaged(L"caseBranches")); BeginArray(); for (auto&& listItem : node->caseBranches) { @@ -37024,10 +37024,10 @@ namespace vl::workflow::json_visitor } EndArray(); EndField(); - BeginField(L"defaultBranch"); + BeginField(vl::WString::Unmanaged(L"defaultBranch")); Print(node->defaultBranch.Obj()); EndField(); - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } @@ -37036,28 +37036,28 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfTopQualifiedExpression* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfTopQualifiedType* node) { - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); } void AstVisitor::PrintFields(WfTryStatement* node) { - BeginField(L"catchStatement"); + BeginField(vl::WString::Unmanaged(L"catchStatement")); Print(node->catchStatement.Obj()); EndField(); - BeginField(L"finallyStatement"); + BeginField(vl::WString::Unmanaged(L"finallyStatement")); Print(node->finallyStatement.Obj()); EndField(); - BeginField(L"name"); + BeginField(vl::WString::Unmanaged(L"name")); WriteToken(node->name); EndField(); - BeginField(L"protectedStatement"); + BeginField(vl::WString::Unmanaged(L"protectedStatement")); Print(node->protectedStatement.Obj()); EndField(); } @@ -37066,106 +37066,106 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfTypeCastingExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"strategy"); + BeginField(vl::WString::Unmanaged(L"strategy")); switch (node->strategy) { case vl::workflow::WfTypeCastingStrategy::Strong: - WriteString(L"Strong"); + WriteString(vl::WString::Unmanaged(L"Strong")); break; case vl::workflow::WfTypeCastingStrategy::Weak: - WriteString(L"Weak"); + WriteString(vl::WString::Unmanaged(L"Weak")); break; default: WriteNull(); } EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfTypeOfExpressionExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); } void AstVisitor::PrintFields(WfTypeOfTypeExpression* node) { - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfTypeTestingExpression* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"test"); + BeginField(vl::WString::Unmanaged(L"test")); switch (node->test) { case vl::workflow::WfTypeTesting::IsNotNull: - WriteString(L"IsNotNull"); + WriteString(vl::WString::Unmanaged(L"IsNotNull")); break; case vl::workflow::WfTypeTesting::IsNotType: - WriteString(L"IsNotType"); + WriteString(vl::WString::Unmanaged(L"IsNotType")); break; case vl::workflow::WfTypeTesting::IsNull: - WriteString(L"IsNull"); + WriteString(vl::WString::Unmanaged(L"IsNull")); break; case vl::workflow::WfTypeTesting::IsType: - WriteString(L"IsType"); + WriteString(vl::WString::Unmanaged(L"IsType")); break; default: WriteNull(); } EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfUnaryExpression* node) { - BeginField(L"op"); + BeginField(vl::WString::Unmanaged(L"op")); switch (node->op) { case vl::workflow::WfUnaryOperator::Negative: - WriteString(L"Negative"); + WriteString(vl::WString::Unmanaged(L"Negative")); break; case vl::workflow::WfUnaryOperator::Not: - WriteString(L"Not"); + WriteString(vl::WString::Unmanaged(L"Not")); break; case vl::workflow::WfUnaryOperator::Positive: - WriteString(L"Positive"); + WriteString(vl::WString::Unmanaged(L"Positive")); break; default: WriteNull(); } EndField(); - BeginField(L"operand"); + BeginField(vl::WString::Unmanaged(L"operand")); Print(node->operand.Obj()); EndField(); } void AstVisitor::PrintFields(WfVariableDeclaration* node) { - BeginField(L"expression"); + BeginField(vl::WString::Unmanaged(L"expression")); Print(node->expression.Obj()); EndField(); - BeginField(L"type"); + BeginField(vl::WString::Unmanaged(L"type")); Print(node->type.Obj()); EndField(); } void AstVisitor::PrintFields(WfVariableStatement* node) { - BeginField(L"variable"); + BeginField(vl::WString::Unmanaged(L"variable")); Print(node->variable.Obj()); EndField(); } void AstVisitor::PrintFields(WfVirtualCfeDeclaration* node) { - BeginField(L"expandedDeclarations"); + BeginField(vl::WString::Unmanaged(L"expandedDeclarations")); BeginArray(); for (auto&& listItem : node->expandedDeclarations) { @@ -37178,13 +37178,13 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfVirtualCfeExpression* node) { - BeginField(L"expandedExpression"); + BeginField(vl::WString::Unmanaged(L"expandedExpression")); Print(node->expandedExpression.Obj()); EndField(); } void AstVisitor::PrintFields(WfVirtualCseDeclaration* node) { - BeginField(L"expandedDeclarations"); + BeginField(vl::WString::Unmanaged(L"expandedDeclarations")); BeginArray(); for (auto&& listItem : node->expandedDeclarations) { @@ -37197,22 +37197,22 @@ namespace vl::workflow::json_visitor } void AstVisitor::PrintFields(WfVirtualCseExpression* node) { - BeginField(L"expandedExpression"); + BeginField(vl::WString::Unmanaged(L"expandedExpression")); Print(node->expandedExpression.Obj()); EndField(); } void AstVisitor::PrintFields(WfVirtualCseStatement* node) { - BeginField(L"expandedStatement"); + BeginField(vl::WString::Unmanaged(L"expandedStatement")); Print(node->expandedStatement.Obj()); EndField(); } void AstVisitor::PrintFields(WfWhileStatement* node) { - BeginField(L"condition"); + BeginField(vl::WString::Unmanaged(L"condition")); Print(node->condition.Obj()); EndField(); - BeginField(L"statement"); + BeginField(vl::WString::Unmanaged(L"statement")); Print(node->statement.Obj()); EndField(); } @@ -37225,7 +37225,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"PredefinedType", node); + WriteType(vl::WString::Unmanaged(L"PredefinedType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37239,7 +37239,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TopQualifiedType", node); + WriteType(vl::WString::Unmanaged(L"TopQualifiedType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37253,7 +37253,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ReferenceType", node); + WriteType(vl::WString::Unmanaged(L"ReferenceType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37267,7 +37267,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"RawPointerType", node); + WriteType(vl::WString::Unmanaged(L"RawPointerType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37281,7 +37281,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"SharedPointerType", node); + WriteType(vl::WString::Unmanaged(L"SharedPointerType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37295,7 +37295,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"NullableType", node); + WriteType(vl::WString::Unmanaged(L"NullableType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37309,7 +37309,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"EnumerableType", node); + WriteType(vl::WString::Unmanaged(L"EnumerableType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37323,7 +37323,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"MapType", node); + WriteType(vl::WString::Unmanaged(L"MapType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37337,7 +37337,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ObservableListType", node); + WriteType(vl::WString::Unmanaged(L"ObservableListType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37351,7 +37351,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FunctionType", node); + WriteType(vl::WString::Unmanaged(L"FunctionType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37365,7 +37365,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ChildType", node); + WriteType(vl::WString::Unmanaged(L"ChildType"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37379,7 +37379,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ThisExpression", node); + WriteType(vl::WString::Unmanaged(L"ThisExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37393,7 +37393,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TopQualifiedExpression", node); + WriteType(vl::WString::Unmanaged(L"TopQualifiedExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37407,7 +37407,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ReferenceExpression", node); + WriteType(vl::WString::Unmanaged(L"ReferenceExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37421,7 +37421,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"OrderedNameExpression", node); + WriteType(vl::WString::Unmanaged(L"OrderedNameExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37435,7 +37435,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"OrderedLambdaExpression", node); + WriteType(vl::WString::Unmanaged(L"OrderedLambdaExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37449,7 +37449,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"MemberExpression", node); + WriteType(vl::WString::Unmanaged(L"MemberExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37463,7 +37463,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ChildExpression", node); + WriteType(vl::WString::Unmanaged(L"ChildExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37477,7 +37477,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"LiteralExpression", node); + WriteType(vl::WString::Unmanaged(L"LiteralExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37491,7 +37491,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FloatingExpression", node); + WriteType(vl::WString::Unmanaged(L"FloatingExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37505,7 +37505,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"IntegerExpression", node); + WriteType(vl::WString::Unmanaged(L"IntegerExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37519,7 +37519,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StringExpression", node); + WriteType(vl::WString::Unmanaged(L"StringExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37533,7 +37533,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"UnaryExpression", node); + WriteType(vl::WString::Unmanaged(L"UnaryExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37547,7 +37547,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"BinaryExpression", node); + WriteType(vl::WString::Unmanaged(L"BinaryExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37561,7 +37561,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"LetExpression", node); + WriteType(vl::WString::Unmanaged(L"LetExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37575,7 +37575,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"IfExpression", node); + WriteType(vl::WString::Unmanaged(L"IfExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37589,7 +37589,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"RangeExpression", node); + WriteType(vl::WString::Unmanaged(L"RangeExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37603,7 +37603,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"SetTestingExpression", node); + WriteType(vl::WString::Unmanaged(L"SetTestingExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37617,7 +37617,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ConstructorExpression", node); + WriteType(vl::WString::Unmanaged(L"ConstructorExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37631,7 +37631,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"InferExpression", node); + WriteType(vl::WString::Unmanaged(L"InferExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37645,7 +37645,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TypeCastingExpression", node); + WriteType(vl::WString::Unmanaged(L"TypeCastingExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37659,7 +37659,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TypeTestingExpression", node); + WriteType(vl::WString::Unmanaged(L"TypeTestingExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37673,7 +37673,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TypeOfTypeExpression", node); + WriteType(vl::WString::Unmanaged(L"TypeOfTypeExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37687,7 +37687,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TypeOfExpressionExpression", node); + WriteType(vl::WString::Unmanaged(L"TypeOfExpressionExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37701,7 +37701,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"AttachEventExpression", node); + WriteType(vl::WString::Unmanaged(L"AttachEventExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37715,7 +37715,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"DetachEventExpression", node); + WriteType(vl::WString::Unmanaged(L"DetachEventExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37729,7 +37729,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ObserveExpression", node); + WriteType(vl::WString::Unmanaged(L"ObserveExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37743,7 +37743,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CallExpression", node); + WriteType(vl::WString::Unmanaged(L"CallExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37757,7 +37757,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FunctionExpression", node); + WriteType(vl::WString::Unmanaged(L"FunctionExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37771,7 +37771,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"NewClassExpression", node); + WriteType(vl::WString::Unmanaged(L"NewClassExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37785,7 +37785,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"NewInterfaceExpression", node); + WriteType(vl::WString::Unmanaged(L"NewInterfaceExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37809,7 +37809,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"BreakStatement", node); + WriteType(vl::WString::Unmanaged(L"BreakStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37823,7 +37823,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ContinueStatement", node); + WriteType(vl::WString::Unmanaged(L"ContinueStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37837,7 +37837,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ReturnStatement", node); + WriteType(vl::WString::Unmanaged(L"ReturnStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37851,7 +37851,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"DeleteStatement", node); + WriteType(vl::WString::Unmanaged(L"DeleteStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37865,7 +37865,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"RaiseExceptionStatement", node); + WriteType(vl::WString::Unmanaged(L"RaiseExceptionStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37879,7 +37879,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"IfStatement", node); + WriteType(vl::WString::Unmanaged(L"IfStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37893,7 +37893,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"WhileStatement", node); + WriteType(vl::WString::Unmanaged(L"WhileStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37907,7 +37907,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"TryStatement", node); + WriteType(vl::WString::Unmanaged(L"TryStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37921,7 +37921,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"BlockStatement", node); + WriteType(vl::WString::Unmanaged(L"BlockStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37935,7 +37935,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"GotoStatement", node); + WriteType(vl::WString::Unmanaged(L"GotoStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37949,7 +37949,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"VariableStatement", node); + WriteType(vl::WString::Unmanaged(L"VariableStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37963,7 +37963,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ExpressionStatement", node); + WriteType(vl::WString::Unmanaged(L"ExpressionStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -37992,7 +37992,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"NamespaceDeclaration", node); + WriteType(vl::WString::Unmanaged(L"NamespaceDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38006,7 +38006,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FunctionDeclaration", node); + WriteType(vl::WString::Unmanaged(L"FunctionDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38020,7 +38020,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"VariableDeclaration", node); + WriteType(vl::WString::Unmanaged(L"VariableDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38034,7 +38034,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"EventDeclaration", node); + WriteType(vl::WString::Unmanaged(L"EventDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38048,7 +38048,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"PropertyDeclaration", node); + WriteType(vl::WString::Unmanaged(L"PropertyDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38062,7 +38062,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StaticInitDeclaration", node); + WriteType(vl::WString::Unmanaged(L"StaticInitDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38076,7 +38076,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ConstructorDeclaration", node); + WriteType(vl::WString::Unmanaged(L"ConstructorDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38090,7 +38090,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"DestructorDeclaration", node); + WriteType(vl::WString::Unmanaged(L"DestructorDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38104,7 +38104,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ClassDeclaration", node); + WriteType(vl::WString::Unmanaged(L"ClassDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38118,7 +38118,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"EnumDeclaration", node); + WriteType(vl::WString::Unmanaged(L"EnumDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38132,7 +38132,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StructDeclaration", node); + WriteType(vl::WString::Unmanaged(L"StructDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38156,7 +38156,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"AutoPropertyDeclaration", node); + WriteType(vl::WString::Unmanaged(L"AutoPropertyDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38171,7 +38171,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CastResultInterfaceDeclaration", node); + WriteType(vl::WString::Unmanaged(L"CastResultInterfaceDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38186,7 +38186,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateMachineDeclaration", node); + WriteType(vl::WString::Unmanaged(L"StateMachineDeclaration"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38201,7 +38201,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ForEachStatement", node); + WriteType(vl::WString::Unmanaged(L"ForEachStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38216,7 +38216,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"SwitchStatement", node); + WriteType(vl::WString::Unmanaged(L"SwitchStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38231,7 +38231,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CoProviderStatement", node); + WriteType(vl::WString::Unmanaged(L"CoProviderStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38246,7 +38246,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CoPauseStatement", node); + WriteType(vl::WString::Unmanaged(L"CoPauseStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38261,7 +38261,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CoOperatorStatement", node); + WriteType(vl::WString::Unmanaged(L"CoOperatorStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38276,7 +38276,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateSwitchStatement", node); + WriteType(vl::WString::Unmanaged(L"StateSwitchStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38291,7 +38291,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateInvokeStatement", node); + WriteType(vl::WString::Unmanaged(L"StateInvokeStatement"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38306,7 +38306,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FormatExpression", node); + WriteType(vl::WString::Unmanaged(L"FormatExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38321,7 +38321,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"BindExpression", node); + WriteType(vl::WString::Unmanaged(L"BindExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38336,7 +38336,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"NewCoroutineExpression", node); + WriteType(vl::WString::Unmanaged(L"NewCoroutineExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38351,7 +38351,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"MixinCastExpression", node); + WriteType(vl::WString::Unmanaged(L"MixinCastExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38366,7 +38366,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ExpectedTypeCastExpression", node); + WriteType(vl::WString::Unmanaged(L"ExpectedTypeCastExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38381,7 +38381,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"CoOperatorExpression", node); + WriteType(vl::WString::Unmanaged(L"CoOperatorExpression"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); PrintFields(static_cast(node)); @@ -38396,7 +38396,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ModuleUsingNameFragment", node); + WriteType(vl::WString::Unmanaged(L"ModuleUsingNameFragment"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38410,7 +38410,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ModuleUsingWildCardFragment", node); + WriteType(vl::WString::Unmanaged(L"ModuleUsingWildCardFragment"), node); PrintFields(static_cast(node)); PrintFields(static_cast(node)); EndObject(); @@ -38479,7 +38479,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"Attribute", node); + WriteType(vl::WString::Unmanaged(L"Attribute"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38492,7 +38492,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"FunctionArgument", node); + WriteType(vl::WString::Unmanaged(L"FunctionArgument"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38505,7 +38505,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"BaseConstructorCall", node); + WriteType(vl::WString::Unmanaged(L"BaseConstructorCall"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38518,7 +38518,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"EnumItemIntersection", node); + WriteType(vl::WString::Unmanaged(L"EnumItemIntersection"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38531,7 +38531,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"EnumItem", node); + WriteType(vl::WString::Unmanaged(L"EnumItem"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38544,7 +38544,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StructMember", node); + WriteType(vl::WString::Unmanaged(L"StructMember"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38557,7 +38557,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateInput", node); + WriteType(vl::WString::Unmanaged(L"StateInput"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38570,7 +38570,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateDeclaration", node); + WriteType(vl::WString::Unmanaged(L"StateDeclaration"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38583,7 +38583,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"SwitchCase", node); + WriteType(vl::WString::Unmanaged(L"SwitchCase"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38596,7 +38596,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateSwitchArgument", node); + WriteType(vl::WString::Unmanaged(L"StateSwitchArgument"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38609,7 +38609,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"StateSwitchCase", node); + WriteType(vl::WString::Unmanaged(L"StateSwitchCase"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38622,7 +38622,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"LetVariable", node); + WriteType(vl::WString::Unmanaged(L"LetVariable"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38635,7 +38635,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ConstructorArgument", node); + WriteType(vl::WString::Unmanaged(L"ConstructorArgument"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38648,7 +38648,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ModuleUsingItem", node); + WriteType(vl::WString::Unmanaged(L"ModuleUsingItem"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38661,7 +38661,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"ModuleUsingPath", node); + WriteType(vl::WString::Unmanaged(L"ModuleUsingPath"), node); PrintFields(static_cast(node)); EndObject(); } @@ -38674,7 +38674,7 @@ namespace vl::workflow::json_visitor return; } BeginObject(); - WriteType(L"Module", node); + WriteType(vl::WString::Unmanaged(L"Module"), node); PrintFields(static_cast(node)); EndObject(); } diff --git a/Import/vlpp.natvis b/Import/vlpp.natvis index 55b1e76e..dae083db 100644 --- a/Import/vlpp.natvis +++ b/Import/vlpp.natvis @@ -2,6 +2,7 @@ + {{ size={length}, buffer={buffer+start,su} }} buffer+start,su @@ -13,6 +14,30 @@ + + {{ size={length}, buffer={buffer+start,s8} }} + buffer+start,su + + length + + length + buffer+start + + + + + + {{ size={length}, buffer={buffer+start,s32} }} + buffer+start,su + + length + + length + buffer+start + + + + {{ size={length}, buffer={buffer+start,s} }} buffer+start,s @@ -57,27 +82,49 @@ - - [empty] - [not evaluated] - {internalValue.reference->value} - - internalValue.reference->value - - - - - {object} - - object - - - - [empty] - {*object} + [empty] + {object} - *object + object + + + + + [invalid] + {{ index=0, value={*($T1*)buffer} }} + {{ index=1, value={*($T2*)buffer} }} + {{ index=2, value={*($T3*)buffer} }} + {{ index=3, value={*($T4*)buffer} }} + {{ index=4, value={*($T5*)buffer} }} + {{ index=5, value={*($T6*)buffer} }} + {{ index=6, value={*($T7*)buffer} }} + {{ index=7, value={*($T8*)buffer} }} + {{ index=8, value={*($T9*)buffer} }} + {{ index=9, value={*($T10*)buffer} }} + {{ index=10, value={*($T11*)buffer} }} + {{ index=11, value={*($T12*)buffer} }} + {{ index=12, value={*($T13*)buffer} }} + {{ index=13, value={*($T14*)buffer} }} + {{ index=14, value={*($T15*)buffer} }} + {{ index=15, value={*($T16*)buffer} }} + + *($T1*)buffer + *($T2*)buffer + *($T3*)buffer + *($T4*)buffer + *($T5*)buffer + *($T6*)buffer + *($T7*)buffer + *($T8*)buffer + *($T9*)buffer + *($T10*)buffer + *($T11*)buffer + *($T12*)buffer + *($T13*)buffer + *($T14*)buffer + *($T15*)buffer + *($T16*)buffer diff --git a/Tools/Executables/GacGen/Main.cpp b/Tools/Executables/GacGen/Main.cpp index 7512eb83..6475f938 100644 --- a/Tools/Executables/GacGen/Main.cpp +++ b/Tools/Executables/GacGen/Main.cpp @@ -686,9 +686,8 @@ public: { } - void Load()override + void Load(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { - FilePath exeFolder = FilePath(executablePath).GetFolder(); FilePath metadataFolder = exeFolder; auto binaryName32 = WString::Unmanaged(L"Reflection32.bin"); @@ -744,7 +743,7 @@ public: #undef INSTALL_SERIALIZABLE_TYPE } - void Unload()override + void Unload(bool controllerUnrelatedPlugins, bool controllerRelatedPlugins)override { } }; diff --git a/Tools/Reflection32.bin b/Tools/Reflection32.bin index ae866952f2a9f88147ea990f09bf92500d759174..5947ee64cbda563b7224db5ab782399ae3571729 100644 GIT binary patch delta 35836 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 diff --git a/Tools/Reflection64.bin b/Tools/Reflection64.bin index eb4ba96060dbacdd175befdac103b124ae584df1..69006c12cabeb142678859fbd6a618302c1844f1 100644 GIT binary patch delta 35836 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 delta 35440 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::vl::WString::Unmanaged(L"Complex Animation")); } (this->animationBackground = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"animationBackground"), ::vl::__vwsn::Box(this->animationBackground)); { ::vl::__vwsn::This(this->animationBackground)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(200); __vwsn_temp__.y = static_cast<::vl::vint>(200); return __vwsn_temp__; }()); } @@ -16475,6 +16476,7 @@ Class (::demo::CategoryEditorConstructor) } { (this->comboBox = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_0))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } { ::vl::__vwsn::This(this->comboBox)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf120_Demo_demo_CategoryEditorConstructor___vwsn_demo_CategoryEditor_Initialize_(this))); @@ -17010,6 +17012,7 @@ Class (::demo::DataGridTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(6)); @@ -17053,6 +17056,7 @@ Class (::demo::DataGridTabPageConstructor) } { (this->dataGrid = new ::vl::presentation::controls::GuiBindableDataGrid(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dataGrid"), ::vl::__vwsn::Box(this->dataGrid)); } { ::vl::__vwsn::This(this->dataGrid)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf1_Demo_demo_DataGridTabPageConstructor___vwsn_demo_DataGridTabPage_Initialize_(this))); @@ -17157,6 +17161,7 @@ Class (::demo::DataGridTabPageConstructor) (this->__vwsn_precompile_19 = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); } (this->dateFilter = new ::demo::DateFilter()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateFilter"), ::vl::__vwsn::Box(this->dateFilter)); (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->dateFilter)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_20)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -17317,6 +17322,7 @@ Class (::demo::DateEditorConstructor) (this->self = __vwsn_this_); { (this->comboBox = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } (this->__vwsn_precompile_0 = ::vl::__vwsn::This(this->comboBox)->GetBoundsComposition()); { @@ -17394,6 +17400,7 @@ Class (::demo::DateFilterConstructor) } { (this->checkFrom = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkFrom"), ::vl::__vwsn::Box(this->checkFrom)); } { ::vl::__vwsn::This(this->checkFrom)->SetText(::vl::WString::Unmanaged(L"From:")); @@ -17410,6 +17417,7 @@ Class (::demo::DateFilterConstructor) } { (this->dateFrom = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateFrom"), ::vl::__vwsn::Box(this->dateFrom)); } { ::vl::__vwsn::This(this->dateFrom)->SetSelectedDate(::vl::__vwsn::Parse<::vl::DateTime>(::vl::WString::Unmanaged(L"1988-01-01 00:00:00.000"))); @@ -17430,6 +17438,7 @@ Class (::demo::DateFilterConstructor) } { (this->checkTo = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkTo"), ::vl::__vwsn::Box(this->checkTo)); } { ::vl::__vwsn::This(this->checkTo)->SetText(::vl::WString::Unmanaged(L"To:")); @@ -17446,6 +17455,7 @@ Class (::demo::DateFilterConstructor) } { (this->dateTo = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateTo"), ::vl::__vwsn::Box(this->dateTo)); } { ::vl::__vwsn::This(this->dateTo)->SetSelectedDate(::vl::__vwsn::Parse<::vl::DateTime>(::vl::WString::Unmanaged(L"2000-01-01 00:00:00.000"))); @@ -17586,6 +17596,7 @@ Class (::demo::DatePickerTabPageConstructor) } { (this->dp1 = new ::vl::presentation::controls::GuiDatePicker(::vl::presentation::theme::ThemeName::DatePicker)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dp1"), ::vl::__vwsn::Box(this->dp1)); } { ::vl::__vwsn::This(this->dp1)->SetAlt(::vl::WString::Unmanaged(L"D")); @@ -17606,6 +17617,7 @@ Class (::demo::DatePickerTabPageConstructor) } { (this->dp2 = new ::vl::presentation::controls::GuiDatePicker(::vl::presentation::theme::ThemeName::DatePicker)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dp2"), ::vl::__vwsn::Box(this->dp2)); } { ::vl::__vwsn::This(this->dp2)->SetAlt(::vl::WString::Unmanaged(L"D")); @@ -17626,6 +17638,7 @@ Class (::demo::DatePickerTabPageConstructor) } { (this->dc1 = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dc1"), ::vl::__vwsn::Box(this->dc1)); } { ::vl::__vwsn::This(this->dc1)->SetAlt(::vl::WString::Unmanaged(L"D")); @@ -17646,6 +17659,7 @@ Class (::demo::DatePickerTabPageConstructor) } { (this->dc2 = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dc2"), ::vl::__vwsn::Box(this->dc2)); } { ::vl::__vwsn::This(this->dc2)->SetAlt(::vl::WString::Unmanaged(L"D")); @@ -18011,6 +18025,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Document Editor")); } (this->dialogMessage = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogMessage"), ::vl::__vwsn::Box(this->dialogMessage)); { ::vl::__vwsn::This(this->dialogMessage)->SetTitle(::vl::WString::Unmanaged(L"You Clicked a Hyperlink!")); } @@ -18018,10 +18033,12 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogMessage)); } (this->dialogNotImpl = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogNotImpl"), ::vl::__vwsn::Box(this->dialogNotImpl)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogNotImpl)); } (this->dialogOpen = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpen"), ::vl::__vwsn::Box(this->dialogOpen)); { ::vl::__vwsn::This(this->dialogOpen)->SetOptions((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogFileMustExist | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDereferenceLinks)); } @@ -18038,6 +18055,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpen)); } (this->dialogOpenDoc = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpenDoc"), ::vl::__vwsn::Box(this->dialogOpenDoc)); { ::vl::__vwsn::This(this->dialogOpenDoc)->SetOptions((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogFileMustExist | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDereferenceLinks)); } @@ -18051,6 +18069,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpenDoc)); } (this->dialogSaveDoc = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSaveDoc"), ::vl::__vwsn::Box(this->dialogSaveDoc)); { ::vl::__vwsn::This(this->dialogSaveDoc)->SetOptions(::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptOverwriteFile); } @@ -18064,6 +18083,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSaveDoc)); } (this->dialogSaveDocPrivate = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSaveDocPrivate"), ::vl::__vwsn::Box(this->dialogSaveDocPrivate)); { ::vl::__vwsn::This(this->dialogSaveDocPrivate)->SetOptions(::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptOverwriteFile); } @@ -18077,6 +18097,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSaveDocPrivate)); } (this->dialogQueryClose = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogQueryClose"), ::vl::__vwsn::Box(this->dialogQueryClose)); { ::vl::__vwsn::This(this->dialogQueryClose)->SetIcon(::vl::presentation::INativeDialogService::MessageBoxIcons::IconQuestion); } @@ -18104,6 +18125,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); } (this->menuContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"menuContainer"), ::vl::__vwsn::Box(this->menuContainer)); { ::vl::__vwsn::This(this->menuContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -18111,6 +18133,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->menuContainer)); } (this->toolstripContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"toolstripContainer"), ::vl::__vwsn::Box(this->toolstripContainer)); { ::vl::__vwsn::This(this->toolstripContainer)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -18123,6 +18146,7 @@ Class (::demo::DocumentEditorBaseConstructor) } { (this->document = new ::vl::presentation::controls::GuiDocumentViewer(::vl::presentation::theme::ThemeName::DocumentViewer)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"document"), ::vl::__vwsn::Box(this->document)); } { ::vl::__vwsn::This(this->document)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); @@ -18144,6 +18168,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); } (this->commandLoadPrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandLoadPrivate"), ::vl::__vwsn::Box(this->commandLoadPrivate)); { ::vl::__vwsn::This(this->commandLoadPrivate)->SetText(::vl::WString::Unmanaged(L"Load as Private Format")); } @@ -18151,6 +18176,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandLoadPrivate)); } (this->commandSavePrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSavePrivate"), ::vl::__vwsn::Box(this->commandSavePrivate)); { ::vl::__vwsn::This(this->commandSavePrivate)->SetText(::vl::WString::Unmanaged(L"Save as Private Format")); } @@ -18158,6 +18184,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSavePrivate)); } (this->commandSaveRtf = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSaveRtf"), ::vl::__vwsn::Box(this->commandSaveRtf)); { ::vl::__vwsn::This(this->commandSaveRtf)->SetText(::vl::WString::Unmanaged(L"Save as RTF")); } @@ -18165,6 +18192,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSaveRtf)); } (this->commandSaveHtml = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSaveHtml"), ::vl::__vwsn::Box(this->commandSaveHtml)); { ::vl::__vwsn::This(this->commandSaveHtml)->SetText(::vl::WString::Unmanaged(L"Save as HTML")); } @@ -18172,6 +18200,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSaveHtml)); } (this->commandUndo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandUndo"), ::vl::__vwsn::Box(this->commandUndo)); { ::vl::__vwsn::This(this->commandUndo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Z")); } @@ -18182,6 +18211,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUndo)); } (this->commandRedo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandRedo"), ::vl::__vwsn::Box(this->commandRedo)); { ::vl::__vwsn::This(this->commandRedo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Y")); } @@ -18192,6 +18222,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRedo)); } (this->commandCopy = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCopy"), ::vl::__vwsn::Box(this->commandCopy)); { ::vl::__vwsn::This(this->commandCopy)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+C")); } @@ -18202,6 +18233,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCopy)); } (this->commandCut = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCut"), ::vl::__vwsn::Box(this->commandCut)); { ::vl::__vwsn::This(this->commandCut)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+X")); } @@ -18212,6 +18244,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCut)); } (this->commandPaste = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandPaste"), ::vl::__vwsn::Box(this->commandPaste)); { ::vl::__vwsn::This(this->commandPaste)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+V")); } @@ -18222,6 +18255,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandPaste)); } (this->commandDelete = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDelete"), ::vl::__vwsn::Box(this->commandDelete)); { ::vl::__vwsn::This(this->commandDelete)->SetText(::vl::WString::Unmanaged(L"Delete")); } @@ -18229,6 +18263,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDelete)); } (this->commandSelect = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSelect"), ::vl::__vwsn::Box(this->commandSelect)); { ::vl::__vwsn::This(this->commandSelect)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+A")); } @@ -18239,6 +18274,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSelect)); } (this->commandInsertImage = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandInsertImage"), ::vl::__vwsn::Box(this->commandInsertImage)); { ::vl::__vwsn::This(this->commandInsertImage)->SetText(::vl::WString::Unmanaged(L"Insert Image ...")); } @@ -18246,6 +18282,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandInsertImage)); } (this->commandEditHyperlink = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditHyperlink"), ::vl::__vwsn::Box(this->commandEditHyperlink)); { ::vl::__vwsn::This(this->commandEditHyperlink)->SetText(::vl::WString::Unmanaged(L"Edit Hyperlink ...")); } @@ -18253,6 +18290,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditHyperlink)); } (this->commandRemoveHyperlink = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandRemoveHyperlink"), ::vl::__vwsn::Box(this->commandRemoveHyperlink)); { ::vl::__vwsn::This(this->commandRemoveHyperlink)->SetText(::vl::WString::Unmanaged(L"Remove Hyperlink")); } @@ -18260,6 +18298,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRemoveHyperlink)); } (this->commandBold = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandBold"), ::vl::__vwsn::Box(this->commandBold)); { ::vl::__vwsn::This(this->commandBold)->SetText(::vl::WString::Unmanaged(L"Bold")); } @@ -18267,6 +18306,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandBold)); } (this->commandItalic = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandItalic"), ::vl::__vwsn::Box(this->commandItalic)); { ::vl::__vwsn::This(this->commandItalic)->SetText(::vl::WString::Unmanaged(L"Italic")); } @@ -18274,6 +18314,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandItalic)); } (this->commandUnderline = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandUnderline"), ::vl::__vwsn::Box(this->commandUnderline)); { ::vl::__vwsn::This(this->commandUnderline)->SetText(::vl::WString::Unmanaged(L"Underline")); } @@ -18281,6 +18322,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUnderline)); } (this->commandStrike = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandStrike"), ::vl::__vwsn::Box(this->commandStrike)); { ::vl::__vwsn::This(this->commandStrike)->SetText(::vl::WString::Unmanaged(L"Strike")); } @@ -18288,6 +18330,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandStrike)); } (this->dialogColor = new ::vl::presentation::controls::GuiColorDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogColor"), ::vl::__vwsn::Box(this->dialogColor)); { ::vl::__vwsn::This(this->dialogColor)->SetEnabledCustomColor(false); } @@ -18295,6 +18338,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogColor)); } (this->dialogFont = new ::vl::presentation::controls::GuiFontDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogFont"), ::vl::__vwsn::Box(this->dialogFont)); { ::vl::__vwsn::This(this->dialogFont)->SetForceFontExist(true); } @@ -18308,6 +18352,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogFont)); } (this->commandFont = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFont"), ::vl::__vwsn::Box(this->commandFont)); { ::vl::__vwsn::This(this->commandFont)->SetText(::vl::WString::Unmanaged(L"Set Font ...")); } @@ -18315,6 +18360,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFont)); } (this->commandColor = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandColor"), ::vl::__vwsn::Box(this->commandColor)); { ::vl::__vwsn::This(this->commandColor)->SetText(::vl::WString::Unmanaged(L"Text Color ...")); } @@ -18322,6 +18368,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandColor)); } (this->commandBackColor = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandBackColor"), ::vl::__vwsn::Box(this->commandBackColor)); { ::vl::__vwsn::This(this->commandBackColor)->SetText(::vl::WString::Unmanaged(L"Background Color ...")); } @@ -18329,6 +18376,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandBackColor)); } (this->commandViewOnly = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandViewOnly"), ::vl::__vwsn::Box(this->commandViewOnly)); { ::vl::__vwsn::This(this->commandViewOnly)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+P")); } @@ -18339,6 +18387,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandViewOnly)); } (this->commandSelectable = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSelectable"), ::vl::__vwsn::Box(this->commandSelectable)); { ::vl::__vwsn::This(this->commandSelectable)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+S")); } @@ -18349,6 +18398,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSelectable)); } (this->commandEditable = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditable"), ::vl::__vwsn::Box(this->commandEditable)); { ::vl::__vwsn::This(this->commandEditable)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+E")); } @@ -18359,6 +18409,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditable)); } (this->commandAlignDefault = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignDefault"), ::vl::__vwsn::Box(this->commandAlignDefault)); { ::vl::__vwsn::This(this->commandAlignDefault)->SetText(::vl::WString::Unmanaged(L"Set Alignment to Default (Left)")); } @@ -18366,6 +18417,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignDefault)); } (this->commandAlignLeft = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignLeft"), ::vl::__vwsn::Box(this->commandAlignLeft)); { ::vl::__vwsn::This(this->commandAlignLeft)->SetText(::vl::WString::Unmanaged(L"Left")); } @@ -18373,6 +18425,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignLeft)); } (this->commandAlignCenter = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignCenter"), ::vl::__vwsn::Box(this->commandAlignCenter)); { ::vl::__vwsn::This(this->commandAlignCenter)->SetText(::vl::WString::Unmanaged(L"Center")); } @@ -18380,6 +18433,7 @@ Class (::demo::DocumentEditorBaseConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignCenter)); } (this->commandAlignRight = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignRight"), ::vl::__vwsn::Box(this->commandAlignRight)); { ::vl::__vwsn::This(this->commandAlignRight)->SetText(::vl::WString::Unmanaged(L"Right")); } @@ -18906,6 +18960,7 @@ Class (::demo::DocumentEditorRibbonConstructor) (this->__vwsn_precompile_87 = ::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBeforeHeaders()); { (this->buttonHome = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonHome"), ::vl::__vwsn::Box(this->buttonHome)); } (this->__vwsn_precompile_88 = ::vl::__vwsn::This(this->buttonHome)->GetBoundsComposition()); { @@ -19446,6 +19501,7 @@ Class (::demo::DocumentEditorRibbonConstructor) } { (this->styleGallery = new ::vl::presentation::controls::GuiBindableRibbonGalleryList(::vl::presentation::theme::ThemeName::RibbonGalleryList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"styleGallery"), ::vl::__vwsn::Box(this->styleGallery)); } { ::vl::__vwsn::This(this->styleGallery)->SetGroupChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf201_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_(this))); @@ -19640,6 +19696,7 @@ Class (::demo::DocumentEditorRibbonConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Document Editor (Ribbon)")); } (this->dialogMessage = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogMessage"), ::vl::__vwsn::Box(this->dialogMessage)); { ::vl::__vwsn::This(this->dialogMessage)->SetTitle(::vl::WString::Unmanaged(L"You Expanded a Group!")); } @@ -19651,6 +19708,7 @@ Class (::demo::DocumentEditorRibbonConstructor) } { (this->toolstripHome = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"toolstripHome"), ::vl::__vwsn::Box(this->toolstripHome)); } { (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiToolstripGroupContainer(::vl::presentation::theme::ThemeName::CustomControl)); @@ -20200,6 +20258,7 @@ Class (::demo::DocumentEditorToolstripConstructor) } { (this->buttonAlignment = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripDropdownButton)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonAlignment"), ::vl::__vwsn::Box(this->buttonAlignment)); } { ::vl::__vwsn::This(this->buttonAlignment)->SetAlt(::vl::WString::Unmanaged(L"P")); @@ -21976,6 +22035,7 @@ Class (::demo::EnglishNumbersControllerTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); } (this->content = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"content"), ::vl::__vwsn::Box(this->content)); { ::vl::__vwsn::This(this->content)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -21987,6 +22047,7 @@ Class (::demo::EnglishNumbersControllerTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->controller = new ::demo::EnglishNumbersController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"controller"), ::vl::__vwsn::Box(this->controller)); (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->controller)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -22154,6 +22215,7 @@ Class (::demo::GenderEditorConstructor) } { (this->comboBox = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_0))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } { ::vl::__vwsn::This(this->comboBox)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf128_Demo_demo_GenderEditorConstructor___vwsn_demo_GenderEditor_Initialize_(this))); @@ -22409,6 +22471,7 @@ Class (::demo::HyperlinkWindowConstructor) } { (this->textUrl = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textUrl"), ::vl::__vwsn::Box(this->textUrl)); } (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->textUrl)->GetBoundsComposition()); { @@ -22620,6 +22683,7 @@ Class (::demo::ListViewTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); @@ -22663,6 +22727,7 @@ Class (::demo::ListViewTabPageConstructor) } { (this->listView = new ::vl::presentation::controls::GuiListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listView"), ::vl::__vwsn::Box(this->listView)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); @@ -22733,6 +22798,7 @@ Class (::demo::ListViewTabPageConstructor) } { (this->bindableListView = new ::vl::presentation::controls::GuiBindableListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableListView"), ::vl::__vwsn::Box(this->bindableListView)); } { ::vl::__vwsn::This(this->bindableListView)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf34_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_(this))); @@ -22897,6 +22963,7 @@ Class (::demo::LocaleSelectorConstructor) (this->self = __vwsn_this_); { (this->listLocales = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listLocales"), ::vl::__vwsn::Box(this->listLocales)); } (this->__vwsn_precompile_0 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); { @@ -22922,6 +22989,7 @@ Class (::demo::LocaleSelectorConstructor) } { (this->comboLocales = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->listLocales))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboLocales"), ::vl::__vwsn::Box(this->comboLocales)); } (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->comboLocales)->GetBoundsComposition()); { @@ -23003,6 +23071,7 @@ Class (::demo::LocalizedColorDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"ColorDialog")); } (this->dialog = new ::vl::presentation::controls::GuiColorDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->dialog)->SetEnabledCustomColor(true); } @@ -23034,6 +23103,7 @@ Class (::demo::LocalizedColorDialogTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->background = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"background"), ::vl::__vwsn::Box(this->background)); { ::vl::__vwsn::This(this->background.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#FFFFFF"))); } @@ -23266,10 +23336,12 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Open/Save FileDialog")); } (this->dialogOpen = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpen"), ::vl::__vwsn::Box(this->dialogOpen)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpen)); } (this->dialogSave = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSave"), ::vl::__vwsn::Box(this->dialogSave)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSave)); } @@ -23416,6 +23488,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtTitle = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtTitle"), ::vl::__vwsn::Box(this->txtTitle)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->txtTitle)->GetBoundsComposition()); { @@ -23436,6 +23509,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtDirectory = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtDirectory"), ::vl::__vwsn::Box(this->txtDirectory)); } (this->__vwsn_precompile_18 = ::vl::__vwsn::This(this->txtDirectory)->GetBoundsComposition()); { @@ -23456,6 +23530,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFileName = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFileName"), ::vl::__vwsn::Box(this->txtFileName)); } (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->txtFileName)->GetBoundsComposition()); { @@ -23476,6 +23551,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFilter = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFilter"), ::vl::__vwsn::Box(this->txtFilter)); } (this->__vwsn_precompile_22 = ::vl::__vwsn::This(this->txtFilter)->GetBoundsComposition()); { @@ -23496,6 +23572,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFilterIndex = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFilterIndex"), ::vl::__vwsn::Box(this->txtFilterIndex)); } (this->__vwsn_precompile_24 = ::vl::__vwsn::This(this->txtFilterIndex)->GetBoundsComposition()); { @@ -23516,6 +23593,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtDefaultExtension = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtDefaultExtension"), ::vl::__vwsn::Box(this->txtDefaultExtension)); } (this->__vwsn_precompile_26 = ::vl::__vwsn::This(this->txtDefaultExtension)->GetBoundsComposition()); { @@ -23547,6 +23625,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_29 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogAllowMultipleSelection = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogAllowMultipleSelection"), ::vl::__vwsn::Box(this->chkFileDialogAllowMultipleSelection)); } { ::vl::__vwsn::This(this->chkFileDialogAllowMultipleSelection)->SetText(::vl::WString::Unmanaged(L"FileDialogAllowMultipleSelection")); @@ -23560,6 +23639,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_30 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogFileMustExist = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogFileMustExist"), ::vl::__vwsn::Box(this->chkFileDialogFileMustExist)); } { ::vl::__vwsn::This(this->chkFileDialogFileMustExist)->SetText(::vl::WString::Unmanaged(L"FileDialogFileMustExist")); @@ -23573,6 +23653,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_31 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogShowReadOnlyCheckBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogShowReadOnlyCheckBox"), ::vl::__vwsn::Box(this->chkFileDialogShowReadOnlyCheckBox)); } { ::vl::__vwsn::This(this->chkFileDialogShowReadOnlyCheckBox)->SetText(::vl::WString::Unmanaged(L"FileDialogShowReadOnlyCheckBox")); @@ -23586,6 +23667,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_32 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogDereferenceLinks = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogDereferenceLinks"), ::vl::__vwsn::Box(this->chkFileDialogDereferenceLinks)); } { ::vl::__vwsn::This(this->chkFileDialogDereferenceLinks)->SetText(::vl::WString::Unmanaged(L"FileDialogDereferenceLinks")); @@ -23599,6 +23681,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_33 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogShowNetworkButton = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogShowNetworkButton"), ::vl::__vwsn::Box(this->chkFileDialogShowNetworkButton)); } { ::vl::__vwsn::This(this->chkFileDialogShowNetworkButton)->SetText(::vl::WString::Unmanaged(L"FileDialogShowNetworkButton")); @@ -23612,6 +23695,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_34 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogPromptCreateFile = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogPromptCreateFile"), ::vl::__vwsn::Box(this->chkFileDialogPromptCreateFile)); } { ::vl::__vwsn::This(this->chkFileDialogPromptCreateFile)->SetText(::vl::WString::Unmanaged(L"FileDialogPromptCreateFile")); @@ -23625,6 +23709,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_35 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogPromptOverwriteFile = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogPromptOverwriteFile"), ::vl::__vwsn::Box(this->chkFileDialogPromptOverwriteFile)); } { ::vl::__vwsn::This(this->chkFileDialogPromptOverwriteFile)->SetText(::vl::WString::Unmanaged(L"FileDialogPromptOverwriteFile")); @@ -23638,6 +23723,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_36 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogDirectoryMustExist = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogDirectoryMustExist"), ::vl::__vwsn::Box(this->chkFileDialogDirectoryMustExist)); } { ::vl::__vwsn::This(this->chkFileDialogDirectoryMustExist)->SetText(::vl::WString::Unmanaged(L"FileDialogDirectoryMustExist")); @@ -23651,6 +23737,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_37 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogAddToRecent = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogAddToRecent"), ::vl::__vwsn::Box(this->chkFileDialogAddToRecent)); } { ::vl::__vwsn::This(this->chkFileDialogAddToRecent)->SetText(::vl::WString::Unmanaged(L"FileDialogAddToRecent")); @@ -23689,6 +23776,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_40 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->lstFiles = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"lstFiles"), ::vl::__vwsn::Box(this->lstFiles)); } { ::vl::__vwsn::This(this->lstFiles)->SetVerticalAlwaysVisible(false); @@ -23919,6 +24007,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"FontDialog")); } (this->dialog = new ::vl::presentation::controls::GuiFontDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->dialog)->SetForceFontExist(true); } @@ -23951,6 +24040,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->label = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"label"), ::vl::__vwsn::Box(this->label)); { ::vl::__vwsn::This(this->label.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#FFFFFF"))); } @@ -23969,6 +24059,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) } { (this->checkEffect = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkEffect"), ::vl::__vwsn::Box(this->checkEffect)); } { ::vl::__vwsn::This(this->checkEffect)->SetSelected(false); @@ -24052,6 +24143,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"MessageDialog")); } (this->dialog = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialog)); } @@ -24183,6 +24275,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->txtTitle = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtTitle"), ::vl::__vwsn::Box(this->txtTitle)); } (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->txtTitle)->GetBoundsComposition()); { @@ -24203,6 +24296,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->txtText = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtText"), ::vl::__vwsn::Box(this->txtText)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->txtText)->GetBoundsComposition()); { @@ -24232,6 +24326,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboInput = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_18))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboInput"), ::vl::__vwsn::Box(this->comboInput)); } (this->__vwsn_precompile_19 = ::vl::__vwsn::This(this->comboInput)->GetBoundsComposition()); { @@ -24258,6 +24353,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboDefaultButton = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_21))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboDefaultButton"), ::vl::__vwsn::Box(this->comboDefaultButton)); } (this->__vwsn_precompile_22 = ::vl::__vwsn::This(this->comboDefaultButton)->GetBoundsComposition()); { @@ -24284,6 +24380,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboIcon = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_24))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboIcon"), ::vl::__vwsn::Box(this->comboIcon)); } (this->__vwsn_precompile_25 = ::vl::__vwsn::This(this->comboIcon)->GetBoundsComposition()); { @@ -24301,6 +24398,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->lblOutput = new ::vl::presentation::controls::GuiLabel(::vl::presentation::theme::ThemeName::Label)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"lblOutput"), ::vl::__vwsn::Box(this->lblOutput)); } { ::vl::__vwsn::This(this->__vwsn_precompile_26)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->lblOutput)->GetBoundsComposition())); @@ -24927,6 +25025,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_27)->SetAlt(::vl::WString::Unmanaged(L"D")); } (this->editorRibbon = new ::demo::DocumentEditorRibbon()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"editorRibbon"), ::vl::__vwsn::Box(this->editorRibbon)); (this->__vwsn_precompile_28 = ::vl::__vwsn::This(this->editorRibbon)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_28)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -24945,6 +25044,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_29)->SetAlt(::vl::WString::Unmanaged(L"D")); } (this->editorToolstrip = new ::demo::DocumentEditorToolstrip()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"editorToolstrip"), ::vl::__vwsn::Box(this->editorToolstrip)); (this->__vwsn_precompile_30 = ::vl::__vwsn::This(this->editorToolstrip)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_30)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -25063,6 +25163,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_42 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkFrame = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkFrame"), ::vl::__vwsn::Box(this->checkFrame)); } { ::vl::__vwsn::This(this->checkFrame)->SetText(::vl::WString::Unmanaged(L"Customized Frame")); @@ -25076,6 +25177,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_43 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMax = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMax"), ::vl::__vwsn::Box(this->checkMax)); } { ::vl::__vwsn::This(this->checkMax)->SetText(::vl::WString::Unmanaged(L"MaximizedBox")); @@ -25089,6 +25191,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_44 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMin = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMin"), ::vl::__vwsn::Box(this->checkMin)); } { ::vl::__vwsn::This(this->checkMin)->SetText(::vl::WString::Unmanaged(L"MinimizedBox")); @@ -25102,6 +25205,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_45 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkBorder"), ::vl::__vwsn::Box(this->checkBorder)); } { ::vl::__vwsn::This(this->checkBorder)->SetText(::vl::WString::Unmanaged(L"Border")); @@ -25115,6 +25219,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_46 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkSizeBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkSizeBox"), ::vl::__vwsn::Box(this->checkSizeBox)); } { ::vl::__vwsn::This(this->checkSizeBox)->SetText(::vl::WString::Unmanaged(L"SizeBox")); @@ -25128,6 +25233,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_47 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkIcon = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkIcon"), ::vl::__vwsn::Box(this->checkIcon)); } { ::vl::__vwsn::This(this->checkIcon)->SetText(::vl::WString::Unmanaged(L"IconVisible")); @@ -25141,6 +25247,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_48 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkTitle = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkTitle"), ::vl::__vwsn::Box(this->checkTitle)); } { ::vl::__vwsn::This(this->checkTitle)->SetText(::vl::WString::Unmanaged(L"TitleBar")); @@ -25587,6 +25694,7 @@ Class (::demo::RefreshBindableDataGridTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(6)); @@ -25690,6 +25798,7 @@ Class (::demo::RefreshBindableDataGridTabPageConstructor) } { (this->dataGrid = new ::vl::presentation::controls::GuiBindableDataGrid(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dataGrid"), ::vl::__vwsn::Box(this->dataGrid)); } { ::vl::__vwsn::This(this->dataGrid)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf250_Demo_demo_RefreshBindableDataGridTabPageConstructor___vwsn_demo_RefreshBindableDataGridTabPage_Initialize_(this))); @@ -25977,6 +26086,7 @@ Class (::demo::RefreshBindableListViewTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); @@ -26080,6 +26190,7 @@ Class (::demo::RefreshBindableListViewTabPageConstructor) } { (this->listView = new ::vl::presentation::controls::GuiBindableListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listView"), ::vl::__vwsn::Box(this->listView)); } { ::vl::__vwsn::This(this->listView)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf274_Demo_demo_RefreshBindableListViewTabPageConstructor___vwsn_demo_RefreshBindableListViewTabPage_Initialize_(this))); @@ -26354,6 +26465,7 @@ Class (::demo::RefreshBindableTextListTabPageConstructor) } { (this->buttonRead = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonRead"), ::vl::__vwsn::Box(this->buttonRead)); } { ::vl::__vwsn::This(this->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); @@ -26370,6 +26482,7 @@ Class (::demo::RefreshBindableTextListTabPageConstructor) } { (this->textList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetView(::vl::presentation::controls::TextListView::Check); @@ -26562,6 +26675,7 @@ Class (::demo::RefreshBindableTreeViewTabPageConstructor) } { (this->treeView = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView, vl::Func(::vl_workflow_global::__vwsnf298_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this)))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeView"), ::vl::__vwsn::Box(this->treeView)); } { ::vl::__vwsn::This(this->treeView)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf299_Demo_demo_RefreshBindableTreeViewTabPageConstructor___vwsn_demo_RefreshBindableTreeViewTabPage_Initialize_(this))); @@ -26901,6 +27015,7 @@ Class (::demo::RefreshListViewTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); @@ -26988,6 +27103,7 @@ Class (::demo::RefreshListViewTabPageConstructor) } { (this->listView = new ::vl::presentation::controls::GuiListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listView"), ::vl::__vwsn::Box(this->listView)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); @@ -27295,6 +27411,7 @@ Class (::demo::RefreshTextListTabPageConstructor) } { (this->buttonRead = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonRead"), ::vl::__vwsn::Box(this->buttonRead)); } { ::vl::__vwsn::This(this->buttonRead)->SetText(::vl::WString::Unmanaged(L"Read (false)")); @@ -27311,6 +27428,7 @@ Class (::demo::RefreshTextListTabPageConstructor) } { (this->textList = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetView(::vl::presentation::controls::TextListView::Check); @@ -27501,6 +27619,7 @@ Class (::demo::RefreshTreeViewTabPageConstructor) } { (this->treeView = new ::vl::presentation::controls::GuiTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeView"), ::vl::__vwsn::Box(this->treeView)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->treeView)->GetBoundsComposition()); { @@ -27704,6 +27823,7 @@ Class (::demo::RepeatTabPageConstructor) (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } (this->repeatStackTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"repeatStackTabPage"), ::vl::__vwsn::Box(this->repeatStackTabPage)); (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->repeatStackTabPage)->GetContentComposition()); { (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); @@ -27754,6 +27874,7 @@ Class (::demo::RepeatTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->repeatStackTabPage)); } (this->repeatFlowTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"repeatFlowTabPage"), ::vl::__vwsn::Box(this->repeatFlowTabPage)); (this->__vwsn_precompile_8 = ::vl::__vwsn::This(this->repeatFlowTabPage)->GetContentComposition()); { (this->__vwsn_precompile_9 = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); @@ -27804,6 +27925,7 @@ Class (::demo::RepeatTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->repeatFlowTabPage)); } (this->sharedSizeFlowTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sharedSizeFlowTabPage"), ::vl::__vwsn::Box(this->sharedSizeFlowTabPage)); (this->__vwsn_precompile_12 = ::vl::__vwsn::This(this->sharedSizeFlowTabPage)->GetContentComposition()); { (this->__vwsn_precompile_13 = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); @@ -27864,6 +27986,7 @@ Class (::demo::RepeatTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->sharedSizeFlowTabPage)); } (this->sharedSizeListTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sharedSizeListTabPage"), ::vl::__vwsn::Box(this->sharedSizeListTabPage)); (this->__vwsn_precompile_17 = ::vl::__vwsn::This(this->sharedSizeListTabPage)->GetContentComposition()); (this->__vwsn_precompile_18 = new ::vl::presentation::compositions::GuiSharedSizeRootComposition()); { @@ -27950,6 +28073,7 @@ Class (::demo::RepeatTabPageConstructor) { (this->hTracker = new ::vl::presentation::controls::GuiScroll(::vl::presentation::theme::ThemeName::HTracker)); ::vl::__vwsn::This(this->hTracker)->SetPageSize(static_cast<::vl::vint>(0)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"hTracker"), ::vl::__vwsn::Box(this->hTracker)); } { ::vl::__vwsn::This(this->hTracker)->SetTotalSize(static_cast<::vl::vint>(10)); @@ -28169,6 +28293,7 @@ Class (::demo::ResponsiveGroupControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveGroupComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); { ::vl::__vwsn::This(this->responsive)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -28561,6 +28686,7 @@ Class (::demo::ResponsiveStackControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveStackComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); { ::vl::__vwsn::This(this->responsive)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(1); __vwsn_temp__.top = static_cast<::vl::vint>(1); __vwsn_temp__.right = static_cast<::vl::vint>(1); __vwsn_temp__.bottom = static_cast<::vl::vint>(1); return __vwsn_temp__; }()); } @@ -29106,6 +29232,7 @@ Class (::demo::ResponsiveViewControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiResponsiveFixedComposition()); (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiStackComposition()); { @@ -29276,6 +29403,7 @@ Class (::demo::ResponsiveViewControlConstructor) } { (this->documentBox = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"documentBox"), ::vl::__vwsn::Box(this->documentBox)); } { ::vl::__vwsn::This(this->documentBox)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); @@ -29706,6 +29834,7 @@ Class (::demo::StyleItemTemplateConstructor) } { (this->containerControl = new ::vl::presentation::controls::GuiCustomControl(::vl::presentation::theme::ThemeName::CustomControl)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"containerControl"), ::vl::__vwsn::Box(this->containerControl)); } { (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiCustomControl(::vl::presentation::theme::ThemeName::CustomControl)); @@ -29755,6 +29884,7 @@ Class (::demo::StyleItemTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->styleLabel = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"styleLabel"), ::vl::__vwsn::Box(this->styleLabel)); { ::vl::__vwsn::This(this->styleLabel.Obj())->SetEllipse(true); } @@ -29941,6 +30071,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkFrame = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkFrame"), ::vl::__vwsn::Box(this->checkFrame)); } { ::vl::__vwsn::This(this->checkFrame)->SetText(::vl::WString::Unmanaged(L"Customized Frame")); @@ -29954,6 +30085,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMax = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMax"), ::vl::__vwsn::Box(this->checkMax)); } { ::vl::__vwsn::This(this->checkMax)->SetText(::vl::WString::Unmanaged(L"MaximizedBox")); @@ -29967,6 +30099,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMin = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMin"), ::vl::__vwsn::Box(this->checkMin)); } { ::vl::__vwsn::This(this->checkMin)->SetText(::vl::WString::Unmanaged(L"MinimizedBox")); @@ -29980,6 +30113,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkBorder"), ::vl::__vwsn::Box(this->checkBorder)); } { ::vl::__vwsn::This(this->checkBorder)->SetText(::vl::WString::Unmanaged(L"Border")); @@ -29993,6 +30127,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkSizeBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkSizeBox"), ::vl::__vwsn::Box(this->checkSizeBox)); } { ::vl::__vwsn::This(this->checkSizeBox)->SetText(::vl::WString::Unmanaged(L"SizeBox")); @@ -30006,6 +30141,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkIcon = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkIcon"), ::vl::__vwsn::Box(this->checkIcon)); } { ::vl::__vwsn::This(this->checkIcon)->SetText(::vl::WString::Unmanaged(L"IconVisible")); @@ -30019,6 +30155,7 @@ Class (::demo::SubWindowConstructor) (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkTitle = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkTitle"), ::vl::__vwsn::Box(this->checkTitle)); } { ::vl::__vwsn::This(this->checkTitle)->SetText(::vl::WString::Unmanaged(L"TitleBar")); @@ -30448,6 +30585,7 @@ Class (::demo::TextBoxTabPageConstructor) (this->__vwsn_precompile_2 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } (this->t1 = new ::demo::TextBoxSubTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"t1"), ::vl::__vwsn::Box(this->t1)); { ::vl::__vwsn::This(this->t1)->SetAlt(::vl::WString::Unmanaged(L"T")); } @@ -30459,6 +30597,7 @@ Class (::demo::TextBoxTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->t1)); } (this->t2 = new ::demo::TextBoxSubTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"t2"), ::vl::__vwsn::Box(this->t2)); { ::vl::__vwsn::This(this->t2)->SetTextBoxAcceptTabInput(false); } @@ -30473,6 +30612,7 @@ Class (::demo::TextBoxTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->t2)); } (this->d1 = new ::demo::DocumentBoxSubTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"d1"), ::vl::__vwsn::Box(this->d1)); { ::vl::__vwsn::This(this->d1)->SetAlt(::vl::WString::Unmanaged(L"D")); } @@ -30484,6 +30624,7 @@ Class (::demo::TextBoxTabPageConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->d1)); } (this->d2 = new ::demo::DocumentBoxSubTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"d2"), ::vl::__vwsn::Box(this->d2)); { ::vl::__vwsn::This(this->d2)->SetTextBoxAcceptTabInput(false); } @@ -30624,6 +30765,7 @@ Class (::demo::TextEditorConstructor) (this->self = __vwsn_this_); { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_0 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { @@ -30682,6 +30824,7 @@ Class (::demo::TextListTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"TextList")); } (this->mutexGroupController = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"mutexGroupController"), ::vl::__vwsn::Box(this->mutexGroupController)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->mutexGroupController)); } @@ -30742,6 +30885,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(0)); @@ -30765,6 +30909,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->textList = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetVerticalAlwaysVisible(false); @@ -30995,6 +31140,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->bindableTextList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableTextList"), ::vl::__vwsn::Box(this->bindableTextList)); } { ::vl::__vwsn::This(this->bindableTextList)->SetCheckedProperty(vl::Func(::vl_workflow_global::__vwsnf82_Demo_demo_TextListTabPageConstructor___vwsn_demo_TextListTabPage_Initialize_(this))); @@ -31275,6 +31421,7 @@ Class (::demo::TreeViewTabPageConstructor) } { (this->treeView = new ::vl::presentation::controls::GuiTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeView"), ::vl::__vwsn::Box(this->treeView)); } { ::vl::__vwsn::This(this->treeView)->SetVerticalAlwaysVisible(false); @@ -31389,6 +31536,7 @@ Class (::demo::TreeViewTabPageConstructor) } { (this->bindableTreeView = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableTreeView"), ::vl::__vwsn::Box(this->bindableTreeView)); } { ::vl::__vwsn::This(this->bindableTreeView)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf90_Demo_demo_TreeViewTabPageConstructor___vwsn_demo_TreeViewTabPage_Initialize_(this))); diff --git a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp index 3f79e3ea..4a2daf2e 100644 --- a/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_ControlTemplate/WindowSkin/UI/Source/DemoPartialClasses.cpp @@ -1143,6 +1143,7 @@ namespace demo (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkFrame = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkFrame"), ::vl::__vwsn::Box(this->checkFrame)); } { ::vl::__vwsn::This(this->checkFrame)->SetText(::vl::WString::Unmanaged(L"Customized Frame")); @@ -1156,6 +1157,7 @@ namespace demo (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMax = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMax"), ::vl::__vwsn::Box(this->checkMax)); } { ::vl::__vwsn::This(this->checkMax)->SetText(::vl::WString::Unmanaged(L"MaximizedBox")); @@ -1169,6 +1171,7 @@ namespace demo (this->__vwsn_precompile_3 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkMin = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkMin"), ::vl::__vwsn::Box(this->checkMin)); } { ::vl::__vwsn::This(this->checkMin)->SetText(::vl::WString::Unmanaged(L"MinimizedBox")); @@ -1182,6 +1185,7 @@ namespace demo (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkBorder"), ::vl::__vwsn::Box(this->checkBorder)); } { ::vl::__vwsn::This(this->checkBorder)->SetText(::vl::WString::Unmanaged(L"Border")); @@ -1195,6 +1199,7 @@ namespace demo (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkSizeBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkSizeBox"), ::vl::__vwsn::Box(this->checkSizeBox)); } { ::vl::__vwsn::This(this->checkSizeBox)->SetText(::vl::WString::Unmanaged(L"SizeBox")); @@ -1208,6 +1213,7 @@ namespace demo (this->__vwsn_precompile_6 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkIcon = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkIcon"), ::vl::__vwsn::Box(this->checkIcon)); } { ::vl::__vwsn::This(this->checkIcon)->SetText(::vl::WString::Unmanaged(L"IconVisible")); @@ -1221,6 +1227,7 @@ namespace demo (this->__vwsn_precompile_7 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkTitle = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkTitle"), ::vl::__vwsn::Box(this->checkTitle)); } { ::vl::__vwsn::This(this->checkTitle)->SetText(::vl::WString::Unmanaged(L"TitleBar")); @@ -1234,6 +1241,7 @@ namespace demo (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->buttonNewWindow = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonNewWindow"), ::vl::__vwsn::Box(this->buttonNewWindow)); } { ::vl::__vwsn::This(this->buttonNewWindow)->SetText(::vl::WString::Unmanaged(L"Open New Window")); diff --git a/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoPartialClasses.cpp index 77b781b8..334dfada 100644 --- a/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/AddressBook/UI/Source/DemoPartialClasses.cpp @@ -1571,38 +1571,47 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"AddressBook")); } (this->commandNewFolder = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandNewFolder"), ::vl::__vwsn::Box(this->commandNewFolder)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandNewFolder)); } (this->commandDeleteFolder = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDeleteFolder"), ::vl::__vwsn::Box(this->commandDeleteFolder)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDeleteFolder)); } (this->commandNewContact = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandNewContact"), ::vl::__vwsn::Box(this->commandNewContact)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandNewContact)); } (this->commandEditContact = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditContact"), ::vl::__vwsn::Box(this->commandEditContact)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditContact)); } (this->commandDeleteContact = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDeleteContact"), ::vl::__vwsn::Box(this->commandDeleteContact)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDeleteContact)); } (this->commandBigIcon = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandBigIcon"), ::vl::__vwsn::Box(this->commandBigIcon)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandBigIcon)); } (this->commandSmallIcon = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSmallIcon"), ::vl::__vwsn::Box(this->commandSmallIcon)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSmallIcon)); } (this->commandList = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandList"), ::vl::__vwsn::Box(this->commandList)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandList)); } (this->commandDetail = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDetail"), ::vl::__vwsn::Box(this->commandDetail)); { ::vl::__vwsn::This(this->commandDetail)->SetSelected(true); } @@ -1610,10 +1619,12 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDetail)); } (this->commandTile = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandTile"), ::vl::__vwsn::Box(this->commandTile)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandTile)); } (this->commandInformation = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandInformation"), ::vl::__vwsn::Box(this->commandInformation)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandInformation)); } @@ -1705,6 +1716,7 @@ Class (::demo::MainWindowConstructor) } { (this->treeViewFolders = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeViewFolders"), ::vl::__vwsn::Box(this->treeViewFolders)); } { ::vl::__vwsn::This(this->treeViewFolders)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf1_Demo_demo_MainWindowConstructor___vwsn_demo_MainWindow_Initialize_(this))); @@ -1853,6 +1865,7 @@ Class (::demo::MainWindowConstructor) } { (this->listViewContacts = new ::vl::presentation::controls::GuiBindableListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listViewContacts"), ::vl::__vwsn::Box(this->listViewContacts)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listViewContacts)->GetDataColumns()); @@ -2235,6 +2248,7 @@ Class (::demo::NewContactWindowConstructor) } { (this->textBoxName = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxName"), ::vl::__vwsn::Box(this->textBoxName)); } { ::vl::__vwsn::This(this->textBoxName)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); @@ -2274,6 +2288,7 @@ Class (::demo::NewContactWindowConstructor) } { (this->textBoxPhone = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxPhone"), ::vl::__vwsn::Box(this->textBoxPhone)); } { ::vl::__vwsn::This(this->textBoxPhone)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); @@ -2313,6 +2328,7 @@ Class (::demo::NewContactWindowConstructor) } { (this->textBoxAddress = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxAddress"), ::vl::__vwsn::Box(this->textBoxAddress)); } { ::vl::__vwsn::This(this->textBoxAddress)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); @@ -2352,6 +2368,7 @@ Class (::demo::NewContactWindowConstructor) } { (this->datePickerBirthday = new ::vl::presentation::controls::GuiDatePicker(::vl::presentation::theme::ThemeName::DatePicker)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"datePickerBirthday"), ::vl::__vwsn::Box(this->datePickerBirthday)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->datePickerBirthday)->GetBoundsComposition()); { @@ -2571,6 +2588,7 @@ Class (::demo::NewFolderWindowConstructor) } { (this->textBoxName = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxName"), ::vl::__vwsn::Box(this->textBoxName)); } { ::vl::__vwsn::This(this->textBoxName)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); diff --git a/Tutorial/GacUI_Controls/Animation/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/Animation/UI/Source/DemoPartialClasses.cpp index 6669177c..236a7e51 100644 --- a/Tutorial/GacUI_Controls/Animation/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/Animation/UI/Source/DemoPartialClasses.cpp @@ -1354,6 +1354,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_18)->SetText(::vl::WString::Unmanaged(L"Complex Animation")); } (this->animationBackground = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"animationBackground"), ::vl::__vwsn::Box(this->animationBackground)); { ::vl::__vwsn::This(this->animationBackground)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(200); __vwsn_temp__.y = static_cast<::vl::vint>(200); return __vwsn_temp__; }()); } diff --git a/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoPartialClasses.cpp index 53b2c8e8..5238c423 100644 --- a/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ColorPicker2/UI/Source/DemoPartialClasses.cpp @@ -499,6 +499,7 @@ Class (::demo::MainWindowConstructor) } { (this->comboColor = new ::vl::presentation::controls::GuiComboButton(::vl::presentation::theme::ThemeName::ComboBox, this->__vwsn_precompile_5)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboColor"), ::vl::__vwsn::Box(this->comboColor)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->comboColor)->GetContainerComposition()); (this->__vwsn_precompile_10 = new ::vl::presentation::compositions::GuiBoundsComposition()); diff --git a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp index 1903b6cc..5708af38 100644 --- a/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ContainersAndButtons/UI/Source/DemoPartialClasses.cpp @@ -71,6 +71,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetText(::vl::WString::Unmanaged(L"ContainersAndButtons")); } (this->radioGroup = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"radioGroup"), ::vl::__vwsn::Box(this->radioGroup)); { ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->radioGroup)); } diff --git a/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoPartialClasses.cpp index 6f3313d0..87245d1f 100644 --- a/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/DataGrid/UI/Source/DemoPartialClasses.cpp @@ -2399,6 +2399,7 @@ Class (::demo::CategoryEditorConstructor) } { (this->comboBox = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_0))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } { ::vl::__vwsn::This(this->comboBox)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf44_Demo_demo_CategoryEditorConstructor___vwsn_demo_CategoryEditor_Initialize_(this))); @@ -2572,6 +2573,7 @@ Class (::demo::DateEditorConstructor) (this->self = __vwsn_this_); { (this->comboBox = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } (this->__vwsn_precompile_0 = ::vl::__vwsn::This(this->comboBox)->GetBoundsComposition()); { @@ -2649,6 +2651,7 @@ Class (::demo::DateFilterConstructor) } { (this->checkFrom = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkFrom"), ::vl::__vwsn::Box(this->checkFrom)); } { ::vl::__vwsn::This(this->checkFrom)->SetText(::vl::WString::Unmanaged(L"From:")); @@ -2665,6 +2668,7 @@ Class (::demo::DateFilterConstructor) } { (this->dateFrom = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateFrom"), ::vl::__vwsn::Box(this->dateFrom)); } { ::vl::__vwsn::This(this->dateFrom)->SetSelectedDate(::vl::__vwsn::Parse<::vl::DateTime>(::vl::WString::Unmanaged(L"1988-01-01 00:00:00.000"))); @@ -2685,6 +2689,7 @@ Class (::demo::DateFilterConstructor) } { (this->checkTo = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkTo"), ::vl::__vwsn::Box(this->checkTo)); } { ::vl::__vwsn::This(this->checkTo)->SetText(::vl::WString::Unmanaged(L"To:")); @@ -2701,6 +2706,7 @@ Class (::demo::DateFilterConstructor) } { (this->dateTo = new ::vl::presentation::controls::GuiDateComboBox(::vl::presentation::theme::ThemeName::DateComboBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateTo"), ::vl::__vwsn::Box(this->dateTo)); } { ::vl::__vwsn::This(this->dateTo)->SetSelectedDate(::vl::__vwsn::Parse<::vl::DateTime>(::vl::WString::Unmanaged(L"2000-01-01 00:00:00.000"))); @@ -2899,6 +2905,7 @@ Class (::demo::GenderEditorConstructor) } { (this->comboBox = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_0))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboBox"), ::vl::__vwsn::Box(this->comboBox)); } { ::vl::__vwsn::This(this->comboBox)->SetItemTemplate(vl::Func(::vl_workflow_global::__vwsnf52_Demo_demo_GenderEditorConstructor___vwsn_demo_GenderEditor_Initialize_(this))); @@ -3154,6 +3161,7 @@ Class (::demo::MainWindowConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } (this->__vwsn_precompile_10 = ::vl::__vwsn::This(this->comboView)->GetBoundsComposition()); { @@ -3177,6 +3185,7 @@ Class (::demo::MainWindowConstructor) } { (this->dataGrid = new ::vl::presentation::controls::GuiBindableDataGrid(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dataGrid"), ::vl::__vwsn::Box(this->dataGrid)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->dataGrid)->GetDataColumns()); @@ -3281,6 +3290,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_16 = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); } (this->dateFilter = new ::demo::DateFilter()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dateFilter"), ::vl::__vwsn::Box(this->dateFilter)); (this->__vwsn_precompile_17 = ::vl::__vwsn::This(this->dateFilter)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_17)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -3535,6 +3545,7 @@ Class (::demo::TextEditorConstructor) (this->self = __vwsn_this_); { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_0 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoPartialClasses.cpp index 6177b235..b007fe4d 100644 --- a/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/Dialogs/UI/Source/DemoPartialClasses.cpp @@ -201,6 +201,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"ColorDialog")); } (this->dialog = new ::vl::presentation::controls::GuiColorDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->dialog)->SetEnabledCustomColor(true); } @@ -232,6 +233,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->background = ::vl::Ptr<::vl::presentation::elements::GuiSolidBackgroundElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidBackgroundElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"background"), ::vl::__vwsn::Box(this->background)); { ::vl::__vwsn::This(this->background.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#FFFFFF"))); } @@ -306,10 +308,12 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Open/Save FileDialog")); } (this->dialogOpen = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpen"), ::vl::__vwsn::Box(this->dialogOpen)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpen)); } (this->dialogSave = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSave"), ::vl::__vwsn::Box(this->dialogSave)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSave)); } @@ -456,6 +460,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtTitle = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtTitle"), ::vl::__vwsn::Box(this->txtTitle)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->txtTitle)->GetBoundsComposition()); { @@ -476,6 +481,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtDirectory = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtDirectory"), ::vl::__vwsn::Box(this->txtDirectory)); } (this->__vwsn_precompile_18 = ::vl::__vwsn::This(this->txtDirectory)->GetBoundsComposition()); { @@ -496,6 +502,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFileName = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFileName"), ::vl::__vwsn::Box(this->txtFileName)); } (this->__vwsn_precompile_20 = ::vl::__vwsn::This(this->txtFileName)->GetBoundsComposition()); { @@ -516,6 +523,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFilter = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFilter"), ::vl::__vwsn::Box(this->txtFilter)); } (this->__vwsn_precompile_22 = ::vl::__vwsn::This(this->txtFilter)->GetBoundsComposition()); { @@ -536,6 +544,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtFilterIndex = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtFilterIndex"), ::vl::__vwsn::Box(this->txtFilterIndex)); } (this->__vwsn_precompile_24 = ::vl::__vwsn::This(this->txtFilterIndex)->GetBoundsComposition()); { @@ -556,6 +565,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) } { (this->txtDefaultExtension = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtDefaultExtension"), ::vl::__vwsn::Box(this->txtDefaultExtension)); } (this->__vwsn_precompile_26 = ::vl::__vwsn::This(this->txtDefaultExtension)->GetBoundsComposition()); { @@ -587,6 +597,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_29 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogAllowMultipleSelection = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogAllowMultipleSelection"), ::vl::__vwsn::Box(this->chkFileDialogAllowMultipleSelection)); } { ::vl::__vwsn::This(this->chkFileDialogAllowMultipleSelection)->SetText(::vl::WString::Unmanaged(L"FileDialogAllowMultipleSelection")); @@ -600,6 +611,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_30 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogFileMustExist = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogFileMustExist"), ::vl::__vwsn::Box(this->chkFileDialogFileMustExist)); } { ::vl::__vwsn::This(this->chkFileDialogFileMustExist)->SetText(::vl::WString::Unmanaged(L"FileDialogFileMustExist")); @@ -613,6 +625,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_31 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogShowReadOnlyCheckBox = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogShowReadOnlyCheckBox"), ::vl::__vwsn::Box(this->chkFileDialogShowReadOnlyCheckBox)); } { ::vl::__vwsn::This(this->chkFileDialogShowReadOnlyCheckBox)->SetText(::vl::WString::Unmanaged(L"FileDialogShowReadOnlyCheckBox")); @@ -626,6 +639,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_32 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogDereferenceLinks = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogDereferenceLinks"), ::vl::__vwsn::Box(this->chkFileDialogDereferenceLinks)); } { ::vl::__vwsn::This(this->chkFileDialogDereferenceLinks)->SetText(::vl::WString::Unmanaged(L"FileDialogDereferenceLinks")); @@ -639,6 +653,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_33 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogShowNetworkButton = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogShowNetworkButton"), ::vl::__vwsn::Box(this->chkFileDialogShowNetworkButton)); } { ::vl::__vwsn::This(this->chkFileDialogShowNetworkButton)->SetText(::vl::WString::Unmanaged(L"FileDialogShowNetworkButton")); @@ -652,6 +667,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_34 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogPromptCreateFile = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogPromptCreateFile"), ::vl::__vwsn::Box(this->chkFileDialogPromptCreateFile)); } { ::vl::__vwsn::This(this->chkFileDialogPromptCreateFile)->SetText(::vl::WString::Unmanaged(L"FileDialogPromptCreateFile")); @@ -665,6 +681,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_35 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogPromptOverwriteFile = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogPromptOverwriteFile"), ::vl::__vwsn::Box(this->chkFileDialogPromptOverwriteFile)); } { ::vl::__vwsn::This(this->chkFileDialogPromptOverwriteFile)->SetText(::vl::WString::Unmanaged(L"FileDialogPromptOverwriteFile")); @@ -678,6 +695,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_36 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogDirectoryMustExist = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogDirectoryMustExist"), ::vl::__vwsn::Box(this->chkFileDialogDirectoryMustExist)); } { ::vl::__vwsn::This(this->chkFileDialogDirectoryMustExist)->SetText(::vl::WString::Unmanaged(L"FileDialogDirectoryMustExist")); @@ -691,6 +709,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_37 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->chkFileDialogAddToRecent = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"chkFileDialogAddToRecent"), ::vl::__vwsn::Box(this->chkFileDialogAddToRecent)); } { ::vl::__vwsn::This(this->chkFileDialogAddToRecent)->SetText(::vl::WString::Unmanaged(L"FileDialogAddToRecent")); @@ -729,6 +748,7 @@ Class (::demo::LocalizedFileDialogTabPageConstructor) (this->__vwsn_precompile_40 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->lstFiles = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"lstFiles"), ::vl::__vwsn::Box(this->lstFiles)); } { ::vl::__vwsn::This(this->lstFiles)->SetVerticalAlwaysVisible(false); @@ -959,6 +979,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"FontDialog")); } (this->dialog = new ::vl::presentation::controls::GuiFontDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->dialog)->SetForceFontExist(true); } @@ -991,6 +1012,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->label = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"label"), ::vl::__vwsn::Box(this->label)); { ::vl::__vwsn::This(this->label.Obj())->SetColor(::vl::__vwsn::Parse<::vl::presentation::Color>(::vl::WString::Unmanaged(L"#FFFFFF"))); } @@ -1009,6 +1031,7 @@ Class (::demo::LocalizedFontDialogTabPageConstructor) } { (this->checkEffect = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkEffect"), ::vl::__vwsn::Box(this->checkEffect)); } { ::vl::__vwsn::This(this->checkEffect)->SetSelected(false); @@ -1092,6 +1115,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"MessageDialog")); } (this->dialog = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialog)); } @@ -1223,6 +1247,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->txtTitle = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtTitle"), ::vl::__vwsn::Box(this->txtTitle)); } (this->__vwsn_precompile_14 = ::vl::__vwsn::This(this->txtTitle)->GetBoundsComposition()); { @@ -1243,6 +1268,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->txtText = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"txtText"), ::vl::__vwsn::Box(this->txtText)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->txtText)->GetBoundsComposition()); { @@ -1272,6 +1298,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboInput = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_18))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboInput"), ::vl::__vwsn::Box(this->comboInput)); } (this->__vwsn_precompile_19 = ::vl::__vwsn::This(this->comboInput)->GetBoundsComposition()); { @@ -1298,6 +1325,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboDefaultButton = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_21))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboDefaultButton"), ::vl::__vwsn::Box(this->comboDefaultButton)); } (this->__vwsn_precompile_22 = ::vl::__vwsn::This(this->comboDefaultButton)->GetBoundsComposition()); { @@ -1324,6 +1352,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->comboIcon = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_24))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboIcon"), ::vl::__vwsn::Box(this->comboIcon)); } (this->__vwsn_precompile_25 = ::vl::__vwsn::This(this->comboIcon)->GetBoundsComposition()); { @@ -1341,6 +1370,7 @@ Class (::demo::LocalizedMessageDialogTabPageConstructor) } { (this->lblOutput = new ::vl::presentation::controls::GuiLabel(::vl::presentation::theme::ThemeName::Label)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"lblOutput"), ::vl::__vwsn::Box(this->lblOutput)); } { ::vl::__vwsn::This(this->__vwsn_precompile_26)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(::vl::__vwsn::This(this->lblOutput)->GetBoundsComposition())); diff --git a/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBasePartialClasses.cpp b/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBasePartialClasses.cpp index 3b4b7845..167efb44 100644 --- a/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBasePartialClasses.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditor/UI/Source/EditorBasePartialClasses.cpp @@ -2903,6 +2903,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Document Editor")); } (this->dialogMessage = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogMessage"), ::vl::__vwsn::Box(this->dialogMessage)); { ::vl::__vwsn::This(this->dialogMessage)->SetTitle(::vl::WString::Unmanaged(L"You Clicked a Hyperlink!")); } @@ -2910,10 +2911,12 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogMessage)); } (this->dialogNotImpl = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogNotImpl"), ::vl::__vwsn::Box(this->dialogNotImpl)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogNotImpl)); } (this->dialogOpen = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpen"), ::vl::__vwsn::Box(this->dialogOpen)); { ::vl::__vwsn::This(this->dialogOpen)->SetOptions((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogFileMustExist | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDereferenceLinks)); } @@ -2930,6 +2933,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpen)); } (this->dialogOpenDoc = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpenDoc"), ::vl::__vwsn::Box(this->dialogOpenDoc)); { ::vl::__vwsn::This(this->dialogOpenDoc)->SetOptions((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogFileMustExist | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDereferenceLinks)); } @@ -2943,6 +2947,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpenDoc)); } (this->dialogSaveDoc = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSaveDoc"), ::vl::__vwsn::Box(this->dialogSaveDoc)); { ::vl::__vwsn::This(this->dialogSaveDoc)->SetOptions(::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptOverwriteFile); } @@ -2956,6 +2961,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSaveDoc)); } (this->dialogSaveDocPrivate = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSaveDocPrivate"), ::vl::__vwsn::Box(this->dialogSaveDocPrivate)); { ::vl::__vwsn::This(this->dialogSaveDocPrivate)->SetOptions(::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptOverwriteFile); } @@ -2969,6 +2975,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogSaveDocPrivate)); } (this->dialogQueryClose = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogQueryClose"), ::vl::__vwsn::Box(this->dialogQueryClose)); { ::vl::__vwsn::This(this->dialogQueryClose)->SetIcon(::vl::presentation::INativeDialogService::MessageBoxIcons::IconQuestion); } @@ -2996,6 +3003,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetColumnOption(static_cast<::vl::vint>(0), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::Percentage; __vwsn_temp__.percentage = static_cast(1.0); return __vwsn_temp__; }()); } (this->menuContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"menuContainer"), ::vl::__vwsn::Box(this->menuContainer)); { ::vl::__vwsn::This(this->menuContainer)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -3003,6 +3011,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->menuContainer)); } (this->toolstripContainer = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"toolstripContainer"), ::vl::__vwsn::Box(this->toolstripContainer)); { ::vl::__vwsn::This(this->toolstripContainer)->SetSite(static_cast<::vl::vint>(1), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -3015,6 +3024,7 @@ namespace demo } { (this->document = new ::vl::presentation::controls::GuiDocumentViewer(::vl::presentation::theme::ThemeName::DocumentViewer)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"document"), ::vl::__vwsn::Box(this->document)); } { ::vl::__vwsn::This(this->document)->SetAlt(::vl::WString::Unmanaged(L"D")); @@ -3036,6 +3046,7 @@ namespace demo ::vl::__vwsn::This(::vl::__vwsn::This(this->self)->GetContainerComposition())->AddChild(static_cast<::vl::presentation::compositions::GuiGraphicsComposition*>(this->__vwsn_precompile_0)); } (this->commandLoadPrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandLoadPrivate"), ::vl::__vwsn::Box(this->commandLoadPrivate)); { ::vl::__vwsn::This(this->commandLoadPrivate)->SetText(::vl::WString::Unmanaged(L"Load as Private Format")); } @@ -3043,6 +3054,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandLoadPrivate)); } (this->commandSavePrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSavePrivate"), ::vl::__vwsn::Box(this->commandSavePrivate)); { ::vl::__vwsn::This(this->commandSavePrivate)->SetText(::vl::WString::Unmanaged(L"Save as Private Format")); } @@ -3050,6 +3062,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSavePrivate)); } (this->commandSaveRtf = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSaveRtf"), ::vl::__vwsn::Box(this->commandSaveRtf)); { ::vl::__vwsn::This(this->commandSaveRtf)->SetText(::vl::WString::Unmanaged(L"Save as RTF")); } @@ -3057,6 +3070,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSaveRtf)); } (this->commandSaveHtml = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSaveHtml"), ::vl::__vwsn::Box(this->commandSaveHtml)); { ::vl::__vwsn::This(this->commandSaveHtml)->SetText(::vl::WString::Unmanaged(L"Save as HTML")); } @@ -3064,6 +3078,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSaveHtml)); } (this->commandUndo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandUndo"), ::vl::__vwsn::Box(this->commandUndo)); { ::vl::__vwsn::This(this->commandUndo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Z")); } @@ -3074,6 +3089,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUndo)); } (this->commandRedo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandRedo"), ::vl::__vwsn::Box(this->commandRedo)); { ::vl::__vwsn::This(this->commandRedo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Y")); } @@ -3084,6 +3100,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRedo)); } (this->commandCopy = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCopy"), ::vl::__vwsn::Box(this->commandCopy)); { ::vl::__vwsn::This(this->commandCopy)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+C")); } @@ -3094,6 +3111,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCopy)); } (this->commandCut = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCut"), ::vl::__vwsn::Box(this->commandCut)); { ::vl::__vwsn::This(this->commandCut)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+X")); } @@ -3104,6 +3122,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCut)); } (this->commandPaste = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandPaste"), ::vl::__vwsn::Box(this->commandPaste)); { ::vl::__vwsn::This(this->commandPaste)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+V")); } @@ -3114,6 +3133,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandPaste)); } (this->commandDelete = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDelete"), ::vl::__vwsn::Box(this->commandDelete)); { ::vl::__vwsn::This(this->commandDelete)->SetText(::vl::WString::Unmanaged(L"Delete")); } @@ -3121,6 +3141,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDelete)); } (this->commandSelect = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSelect"), ::vl::__vwsn::Box(this->commandSelect)); { ::vl::__vwsn::This(this->commandSelect)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+A")); } @@ -3131,6 +3152,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSelect)); } (this->commandInsertImage = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandInsertImage"), ::vl::__vwsn::Box(this->commandInsertImage)); { ::vl::__vwsn::This(this->commandInsertImage)->SetText(::vl::WString::Unmanaged(L"Insert Image ...")); } @@ -3138,6 +3160,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandInsertImage)); } (this->commandEditHyperlink = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditHyperlink"), ::vl::__vwsn::Box(this->commandEditHyperlink)); { ::vl::__vwsn::This(this->commandEditHyperlink)->SetText(::vl::WString::Unmanaged(L"Edit Hyperlink ...")); } @@ -3145,6 +3168,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditHyperlink)); } (this->commandRemoveHyperlink = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandRemoveHyperlink"), ::vl::__vwsn::Box(this->commandRemoveHyperlink)); { ::vl::__vwsn::This(this->commandRemoveHyperlink)->SetText(::vl::WString::Unmanaged(L"Remove Hyperlink")); } @@ -3152,6 +3176,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRemoveHyperlink)); } (this->commandBold = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandBold"), ::vl::__vwsn::Box(this->commandBold)); { ::vl::__vwsn::This(this->commandBold)->SetText(::vl::WString::Unmanaged(L"Bold")); } @@ -3159,6 +3184,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandBold)); } (this->commandItalic = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandItalic"), ::vl::__vwsn::Box(this->commandItalic)); { ::vl::__vwsn::This(this->commandItalic)->SetText(::vl::WString::Unmanaged(L"Italic")); } @@ -3166,6 +3192,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandItalic)); } (this->commandUnderline = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandUnderline"), ::vl::__vwsn::Box(this->commandUnderline)); { ::vl::__vwsn::This(this->commandUnderline)->SetText(::vl::WString::Unmanaged(L"Underline")); } @@ -3173,6 +3200,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUnderline)); } (this->commandStrike = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandStrike"), ::vl::__vwsn::Box(this->commandStrike)); { ::vl::__vwsn::This(this->commandStrike)->SetText(::vl::WString::Unmanaged(L"Strike")); } @@ -3180,6 +3208,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandStrike)); } (this->dialogColor = new ::vl::presentation::controls::GuiColorDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogColor"), ::vl::__vwsn::Box(this->dialogColor)); { ::vl::__vwsn::This(this->dialogColor)->SetEnabledCustomColor(false); } @@ -3187,6 +3216,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogColor)); } (this->dialogFont = new ::vl::presentation::controls::GuiFontDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogFont"), ::vl::__vwsn::Box(this->dialogFont)); { ::vl::__vwsn::This(this->dialogFont)->SetForceFontExist(true); } @@ -3200,6 +3230,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogFont)); } (this->commandFont = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFont"), ::vl::__vwsn::Box(this->commandFont)); { ::vl::__vwsn::This(this->commandFont)->SetText(::vl::WString::Unmanaged(L"Set Font ...")); } @@ -3207,6 +3238,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFont)); } (this->commandColor = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandColor"), ::vl::__vwsn::Box(this->commandColor)); { ::vl::__vwsn::This(this->commandColor)->SetText(::vl::WString::Unmanaged(L"Text Color ...")); } @@ -3214,6 +3246,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandColor)); } (this->commandBackColor = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandBackColor"), ::vl::__vwsn::Box(this->commandBackColor)); { ::vl::__vwsn::This(this->commandBackColor)->SetText(::vl::WString::Unmanaged(L"Background Color ...")); } @@ -3221,6 +3254,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandBackColor)); } (this->commandViewOnly = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandViewOnly"), ::vl::__vwsn::Box(this->commandViewOnly)); { ::vl::__vwsn::This(this->commandViewOnly)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+P")); } @@ -3231,6 +3265,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandViewOnly)); } (this->commandSelectable = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandSelectable"), ::vl::__vwsn::Box(this->commandSelectable)); { ::vl::__vwsn::This(this->commandSelectable)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+S")); } @@ -3241,6 +3276,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandSelectable)); } (this->commandEditable = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditable"), ::vl::__vwsn::Box(this->commandEditable)); { ::vl::__vwsn::This(this->commandEditable)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Shift+E")); } @@ -3251,6 +3287,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditable)); } (this->commandAlignDefault = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignDefault"), ::vl::__vwsn::Box(this->commandAlignDefault)); { ::vl::__vwsn::This(this->commandAlignDefault)->SetText(::vl::WString::Unmanaged(L"Set Alignment to Default (Left)")); } @@ -3258,6 +3295,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignDefault)); } (this->commandAlignLeft = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignLeft"), ::vl::__vwsn::Box(this->commandAlignLeft)); { ::vl::__vwsn::This(this->commandAlignLeft)->SetText(::vl::WString::Unmanaged(L"Left")); } @@ -3265,6 +3303,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignLeft)); } (this->commandAlignCenter = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignCenter"), ::vl::__vwsn::Box(this->commandAlignCenter)); { ::vl::__vwsn::This(this->commandAlignCenter)->SetText(::vl::WString::Unmanaged(L"Center")); } @@ -3272,6 +3311,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAlignCenter)); } (this->commandAlignRight = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAlignRight"), ::vl::__vwsn::Box(this->commandAlignRight)); { ::vl::__vwsn::This(this->commandAlignRight)->SetText(::vl::WString::Unmanaged(L"Right")); } @@ -3828,6 +3868,7 @@ Class (::demo::HyperlinkWindowConstructor) } { (this->textUrl = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textUrl"), ::vl::__vwsn::Box(this->textUrl)); } (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->textUrl)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonPartialClasses.cpp b/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonPartialClasses.cpp index 77846f9e..86dad8e5 100644 --- a/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditorRibbon/UI/Source/EditorRibbonPartialClasses.cpp @@ -1725,6 +1725,7 @@ namespace demo } { (this->styleGallery = new ::vl::presentation::controls::GuiBindableRibbonGalleryList(::vl::presentation::theme::ThemeName::RibbonGalleryList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"styleGallery"), ::vl::__vwsn::Box(this->styleGallery)); } { ::vl::__vwsn::This(this->styleGallery)->SetGroupChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf3_EditorRibbon_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_(this))); @@ -1965,6 +1966,7 @@ namespace demo (this->__vwsn_precompile_10 = ::vl::__vwsn::This(this->__vwsn_precompile_8)->GetBeforeHeaders()); { (this->buttonHome = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonHome"), ::vl::__vwsn::Box(this->buttonHome)); } (this->__vwsn_precompile_11 = ::vl::__vwsn::This(this->buttonHome)->GetBoundsComposition()); { @@ -1987,6 +1989,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Document Editor (Ribbon)")); } (this->dialogMessage = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogMessage"), ::vl::__vwsn::Box(this->dialogMessage)); { ::vl::__vwsn::This(this->dialogMessage)->SetTitle(::vl::WString::Unmanaged(L"You Expanded a Group!")); } @@ -1998,6 +2001,7 @@ namespace demo } { (this->toolstripHome = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"toolstripHome"), ::vl::__vwsn::Box(this->toolstripHome)); } { (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiToolstripGroupContainer(::vl::presentation::theme::ThemeName::CustomControl)); @@ -2498,6 +2502,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(800); __vwsn_temp__.y = static_cast<::vl::vint>(600); return __vwsn_temp__; }()); } (this->editor = new ::demo::DocumentEditorRibbon()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"editor"), ::vl::__vwsn::Box(this->editor)); (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->editor)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -2587,6 +2592,7 @@ Class (::demo::StyleItemTemplateConstructor) } { (this->containerControl = new ::vl::presentation::controls::GuiCustomControl(::vl::presentation::theme::ThemeName::CustomControl)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"containerControl"), ::vl::__vwsn::Box(this->containerControl)); } { (this->__vwsn_precompile_5 = new ::vl::presentation::controls::GuiCustomControl(::vl::presentation::theme::ThemeName::CustomControl)); @@ -2636,6 +2642,7 @@ Class (::demo::StyleItemTemplateConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->styleLabel = ::vl::Ptr<::vl::presentation::elements::GuiSolidLabelElement>(::vl::reflection::description::Element_Constructor<::vl::presentation::elements::GuiSolidLabelElement>())); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"styleLabel"), ::vl::__vwsn::Box(this->styleLabel)); { ::vl::__vwsn::This(this->styleLabel.Obj())->SetVerticalAlignment(::vl::presentation::Alignment::Center); } diff --git a/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripPartialClasses.cpp b/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripPartialClasses.cpp index 31eb6147..68df7149 100644 --- a/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/DocumentEditorToolstrip/UI/Source/EditorToolstripPartialClasses.cpp @@ -390,6 +390,7 @@ namespace demo } { (this->buttonAlignment = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::ToolstripDropdownButton)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonAlignment"), ::vl::__vwsn::Box(this->buttonAlignment)); } { ::vl::__vwsn::This(this->buttonAlignment)->SetAlt(::vl::WString::Unmanaged(L"P")); @@ -1180,6 +1181,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(800); __vwsn_temp__.y = static_cast<::vl::vint>(600); return __vwsn_temp__; }()); } (this->editor = new ::demo::DocumentEditorToolstrip()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"editor"), ::vl::__vwsn::Box(this->editor)); (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->editor)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); diff --git a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp index 7b8eacda..dc436b14 100644 --- a/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/GlobalHotKey/UI/Source/DemoPartialClasses.cpp @@ -113,6 +113,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"GlobalHotkey")); } (this->dialog = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialog"), ::vl::__vwsn::Box(this->dialog)); { ::vl::__vwsn::This(this->dialog)->SetTitle(::vl::WString::Unmanaged(L"Global Hotkey")); } @@ -123,6 +124,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialog)); } (this->commandGlobal = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandGlobal"), ::vl::__vwsn::Box(this->commandGlobal)); { ::vl::__vwsn::This(this->commandGlobal)->SetShortcutBuilder(::vl::WString::Unmanaged(L"global:Ctrl+Shift+Alt+D")); } @@ -134,6 +136,7 @@ namespace demo } { (this->menuRightClick = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"menuRightClick"), ::vl::__vwsn::Box(this->menuRightClick)); } { (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiToolstripGroupContainer(::vl::presentation::theme::ThemeName::CustomControl)); diff --git a/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoPartialClasses.cpp index 24e3b8a0..019fe7d9 100644 --- a/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ListControls/UI/Source/DemoPartialClasses.cpp @@ -795,6 +795,7 @@ namespace demo } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(5)); @@ -818,6 +819,7 @@ namespace demo } { (this->listView = new ::vl::presentation::controls::GuiListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listView"), ::vl::__vwsn::Box(this->listView)); } { auto __vwsn_collection_ = ::vl::__vwsn::UnboxCollection<::vl::reflection::description::IValueList>(::vl::__vwsn::This(this->listView)->GetDataColumns()); @@ -888,6 +890,7 @@ namespace demo } { (this->bindableListView = new ::vl::presentation::controls::GuiBindableListView(::vl::presentation::theme::ThemeName::ListView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableListView"), ::vl::__vwsn::Box(this->bindableListView)); } { ::vl::__vwsn::This(this->bindableListView)->SetSmallImageProperty(vl::Func(::vl_workflow_global::__vwsnf1_Demo_demo_ListViewTabPageConstructor___vwsn_demo_ListViewTabPage_Initialize_(this))); @@ -1212,6 +1215,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->comboView = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->__vwsn_precompile_2))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboView"), ::vl::__vwsn::Box(this->comboView)); } { ::vl::__vwsn::This(this->comboView)->SetSelectedIndex(static_cast<::vl::vint>(0)); @@ -1235,6 +1239,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->textList = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textList"), ::vl::__vwsn::Box(this->textList)); } { ::vl::__vwsn::This(this->textList)->SetVerticalAlwaysVisible(false); @@ -1364,6 +1369,7 @@ Class (::demo::TextListTabPageConstructor) } { (this->bindableTextList = new ::vl::presentation::controls::GuiBindableTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableTextList"), ::vl::__vwsn::Box(this->bindableTextList)); } { ::vl::__vwsn::This(this->bindableTextList)->SetCheckedProperty(vl::Func(::vl_workflow_global::__vwsnf10_Demo_demo_TextListTabPageConstructor___vwsn_demo_TextListTabPage_Initialize_(this))); @@ -1592,6 +1598,7 @@ Class (::demo::TreeViewTabPageConstructor) } { (this->treeView = new ::vl::presentation::controls::GuiTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"treeView"), ::vl::__vwsn::Box(this->treeView)); } { ::vl::__vwsn::This(this->treeView)->SetVerticalAlwaysVisible(false); @@ -1706,6 +1713,7 @@ Class (::demo::TreeViewTabPageConstructor) } { (this->bindableTreeView = new ::vl::presentation::controls::GuiBindableTreeView(::vl::presentation::theme::ThemeName::TreeView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"bindableTreeView"), ::vl::__vwsn::Box(this->bindableTreeView)); } { ::vl::__vwsn::This(this->bindableTreeView)->SetChildrenProperty(vl::Func(::vl_workflow_global::__vwsnf17_Demo_demo_TreeViewTabPageConstructor___vwsn_demo_TreeViewTabPage_Initialize_(this))); diff --git a/Tutorial/GacUI_Controls/Localization/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/Localization/UI/Source/DemoPartialClasses.cpp index 1e5d00d8..31d3f277 100644 --- a/Tutorial/GacUI_Controls/Localization/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/Localization/UI/Source/DemoPartialClasses.cpp @@ -1731,6 +1731,7 @@ Class (::demo::MainWindowConstructor) } { (this->listLocales = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"listLocales"), ::vl::__vwsn::Box(this->listLocales)); } (this->__vwsn_precompile_4 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); { @@ -1764,6 +1765,7 @@ Class (::demo::MainWindowConstructor) } { (this->comboLocales = new ::vl::presentation::controls::GuiComboBoxListControl(::vl::presentation::theme::ThemeName::ComboBox, static_cast<::vl::presentation::controls::GuiSelectableListControl*>(this->listLocales))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"comboLocales"), ::vl::__vwsn::Box(this->comboLocales)); } (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->comboLocales)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoPartialClasses.cpp index 842f9299..d5bb8252 100644 --- a/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/MenuVisibility/UI/Source/DemoPartialClasses.cpp @@ -111,6 +111,7 @@ namespace demo } { (this->menuItems = new ::vl::presentation::controls::GuiToolstripButton(::vl::presentation::theme::ThemeName::MenuBarButton)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"menuItems"), ::vl::__vwsn::Box(this->menuItems)); } { ::vl::__vwsn::This(this->menuItems)->SetText(::vl::WString::Unmanaged(L"Items")); @@ -221,6 +222,7 @@ namespace demo } { (this->checkList = new ::vl::presentation::controls::GuiTextList(::vl::presentation::theme::ThemeName::TextList)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkList"), ::vl::__vwsn::Box(this->checkList)); } (this->__vwsn_precompile_17 = ::vl::Ptr<::vl::presentation::controls::list::TextItem>(new ::vl::presentation::controls::list::TextItem())); { diff --git a/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoPartialClasses.cpp index c2979386..3668224e 100644 --- a/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/ProgressAndAsync/UI/Source/DemoPartialClasses.cpp @@ -359,6 +359,7 @@ Class (::demo::MainWindowConstructor) { (this->progressBar = new ::vl::presentation::controls::GuiScroll(::vl::presentation::theme::ThemeName::ProgressBar)); ::vl::__vwsn::This(this->progressBar)->SetPageSize(static_cast<::vl::vint>(0)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"progressBar"), ::vl::__vwsn::Box(this->progressBar)); } (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->progressBar)->GetBoundsComposition()); { @@ -379,6 +380,7 @@ Class (::demo::MainWindowConstructor) } { (this->buttonDownload = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonDownload"), ::vl::__vwsn::Box(this->buttonDownload)); } { ::vl::__vwsn::This(this->buttonDownload)->SetText(::vl::WString::Unmanaged(L"Begin Download!")); @@ -395,6 +397,7 @@ Class (::demo::MainWindowConstructor) } { (this->textResult = new ::vl::presentation::controls::GuiMultilineTextBox(::vl::presentation::theme::ThemeName::MultilineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textResult"), ::vl::__vwsn::Box(this->textResult)); } { ::vl::__vwsn::This(this->textResult)->SetReadonly(true); diff --git a/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoPartialClasses.cpp index fc987cd9..697afb88 100644 --- a/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/QueryService/UI/Source/DemoPartialClasses.cpp @@ -306,6 +306,7 @@ namespace demo } { (this->textBox = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->textBox)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Controls/TextEditor/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/TextEditor/UI/Source/DemoPartialClasses.cpp index 13e3b320..3032cd45 100644 --- a/Tutorial/GacUI_Controls/TextEditor/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/TextEditor/UI/Source/DemoPartialClasses.cpp @@ -1068,6 +1068,7 @@ namespace demo } { (this->documentLabel = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentLabel)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"documentLabel"), ::vl::__vwsn::Box(this->documentLabel)); } (this->__vwsn_precompile_4 = ::vl::__vwsn::This(this->documentLabel)->GetBoundsComposition()); { @@ -1158,10 +1159,12 @@ Class (::demo::FindWindowConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Find")); } (this->groupDirection = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupDirection"), ::vl::__vwsn::Box(this->groupDirection)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->groupDirection)); } (this->dialogContentNotFound = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogContentNotFound"), ::vl::__vwsn::Box(this->dialogContentNotFound)); { ::vl::__vwsn::This(this->dialogContentNotFound)->SetInput(::vl::presentation::INativeDialogService::MessageBoxButtonsInput::DisplayOK); } @@ -1215,6 +1218,7 @@ Class (::demo::FindWindowConstructor) } { (this->textFind = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textFind"), ::vl::__vwsn::Box(this->textFind)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textFind)->GetBoundsComposition()); { @@ -1246,6 +1250,7 @@ Class (::demo::FindWindowConstructor) (this->__vwsn_precompile_8 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkCase = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkCase"), ::vl::__vwsn::Box(this->checkCase)); } { ::vl::__vwsn::This(this->checkCase)->SetText(::vl::WString::Unmanaged(L"Case Sensitive")); @@ -1287,6 +1292,7 @@ Class (::demo::FindWindowConstructor) (this->__vwsn_precompile_12 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->radioUp = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::RadioButton)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"radioUp"), ::vl::__vwsn::Box(this->radioUp)); } { ::vl::__vwsn::This(this->radioUp)->SetText(::vl::WString::Unmanaged(L"Up")); @@ -1300,6 +1306,7 @@ Class (::demo::FindWindowConstructor) (this->__vwsn_precompile_13 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->radioDown = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::RadioButton)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"radioDown"), ::vl::__vwsn::Box(this->radioDown)); } { ::vl::__vwsn::This(this->radioDown)->SetSelected(true); @@ -1442,6 +1449,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"TextEditor")); } (this->commandFileNewText = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileNewText"), ::vl::__vwsn::Box(this->commandFileNewText)); { ::vl::__vwsn::This(this->commandFileNewText)->SetText(::vl::WString::Unmanaged(L"Text File")); } @@ -1449,6 +1457,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileNewText)); } (this->commandFileNewXml = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileNewXml"), ::vl::__vwsn::Box(this->commandFileNewXml)); { ::vl::__vwsn::This(this->commandFileNewXml)->SetText(::vl::WString::Unmanaged(L"Xml File")); } @@ -1456,6 +1465,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileNewXml)); } (this->commandFileOpen = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileOpen"), ::vl::__vwsn::Box(this->commandFileOpen)); { ::vl::__vwsn::This(this->commandFileOpen)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+O")); } @@ -1466,6 +1476,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileOpen)); } (this->commandFileOpenText = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileOpenText"), ::vl::__vwsn::Box(this->commandFileOpenText)); { ::vl::__vwsn::This(this->commandFileOpenText)->SetText(::vl::WString::Unmanaged(L"Text File ...")); } @@ -1473,6 +1484,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileOpenText)); } (this->commandFileOpenXml = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileOpenXml"), ::vl::__vwsn::Box(this->commandFileOpenXml)); { ::vl::__vwsn::This(this->commandFileOpenXml)->SetText(::vl::WString::Unmanaged(L"Xml File ...")); } @@ -1480,6 +1492,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileOpenXml)); } (this->commandFileSave = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileSave"), ::vl::__vwsn::Box(this->commandFileSave)); { ::vl::__vwsn::This(this->commandFileSave)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+S")); } @@ -1490,6 +1503,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileSave)); } (this->commandFileSaveAs = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileSaveAs"), ::vl::__vwsn::Box(this->commandFileSaveAs)); { ::vl::__vwsn::This(this->commandFileSaveAs)->SetText(::vl::WString::Unmanaged(L"Save As ...")); } @@ -1497,6 +1511,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileSaveAs)); } (this->commandFileExit = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandFileExit"), ::vl::__vwsn::Box(this->commandFileExit)); { ::vl::__vwsn::This(this->commandFileExit)->SetText(::vl::WString::Unmanaged(L"Exit")); } @@ -1504,6 +1519,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandFileExit)); } (this->commandEditUndo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditUndo"), ::vl::__vwsn::Box(this->commandEditUndo)); { ::vl::__vwsn::This(this->commandEditUndo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Z")); } @@ -1514,6 +1530,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditUndo)); } (this->commandEditRedo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditRedo"), ::vl::__vwsn::Box(this->commandEditRedo)); { ::vl::__vwsn::This(this->commandEditRedo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Y")); } @@ -1524,6 +1541,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditRedo)); } (this->commandEditCut = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditCut"), ::vl::__vwsn::Box(this->commandEditCut)); { ::vl::__vwsn::This(this->commandEditCut)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+X")); } @@ -1534,6 +1552,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditCut)); } (this->commandEditCopy = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditCopy"), ::vl::__vwsn::Box(this->commandEditCopy)); { ::vl::__vwsn::This(this->commandEditCopy)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+C")); } @@ -1544,6 +1563,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditCopy)); } (this->commandEditPaste = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditPaste"), ::vl::__vwsn::Box(this->commandEditPaste)); { ::vl::__vwsn::This(this->commandEditPaste)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+V")); } @@ -1554,6 +1574,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditPaste)); } (this->commandEditDelete = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditDelete"), ::vl::__vwsn::Box(this->commandEditDelete)); { ::vl::__vwsn::This(this->commandEditDelete)->SetText(::vl::WString::Unmanaged(L"Delete")); } @@ -1561,6 +1582,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditDelete)); } (this->commandEditSelect = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditSelect"), ::vl::__vwsn::Box(this->commandEditSelect)); { ::vl::__vwsn::This(this->commandEditSelect)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+A")); } @@ -1571,6 +1593,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditSelect)); } (this->commandEditFind = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandEditFind"), ::vl::__vwsn::Box(this->commandEditFind)); { ::vl::__vwsn::This(this->commandEditFind)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+F")); } @@ -1581,6 +1604,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandEditFind)); } (this->commandAbout = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandAbout"), ::vl::__vwsn::Box(this->commandAbout)); { ::vl::__vwsn::This(this->commandAbout)->SetText(::vl::WString::Unmanaged(L"About TextEditor ...")); } @@ -1588,6 +1612,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandAbout)); } (this->dialogQueryClose = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogQueryClose"), ::vl::__vwsn::Box(this->dialogQueryClose)); { ::vl::__vwsn::This(this->dialogQueryClose)->SetIcon(::vl::presentation::INativeDialogService::MessageBoxIcons::IconQuestion); } @@ -1601,6 +1626,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogQueryClose)); } (this->dialogCannotOpen = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogCannotOpen"), ::vl::__vwsn::Box(this->dialogCannotOpen)); { ::vl::__vwsn::This(this->dialogCannotOpen)->SetIcon(::vl::presentation::INativeDialogService::MessageBoxIcons::IconError); } @@ -1614,6 +1640,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogCannotOpen)); } (this->dialogCannotSave = new ::vl::presentation::controls::GuiMessageDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogCannotSave"), ::vl::__vwsn::Box(this->dialogCannotSave)); { ::vl::__vwsn::This(this->dialogCannotSave)->SetIcon(::vl::presentation::INativeDialogService::MessageBoxIcons::IconError); } @@ -1627,6 +1654,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogCannotSave)); } (this->dialogOpen = new ::vl::presentation::controls::GuiOpenFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogOpen"), ::vl::__vwsn::Box(this->dialogOpen)); { ::vl::__vwsn::This(this->dialogOpen)->SetOptions((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogFileMustExist | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDereferenceLinks)); } @@ -1640,6 +1668,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->dialogOpen)); } (this->dialogSave = new ::vl::presentation::controls::GuiSaveFileDialog()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"dialogSave"), ::vl::__vwsn::Box(this->dialogSave)); { ::vl::__vwsn::This(this->dialogSave)->SetOptions((((::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptCreateFile | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogPromptOverwriteFile) | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogDirectoryMustExist) | ::vl::presentation::INativeDialogService::FileDialogOptions::FileDialogAddToRecent)); } @@ -2140,6 +2169,7 @@ Class (::demo::MainWindowConstructor) } { (this->textBox = new ::vl::presentation::controls::GuiMultilineTextBox(::vl::presentation::theme::ThemeName::MultilineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBox"), ::vl::__vwsn::Box(this->textBox)); } { ::vl::__vwsn::This(this->textBox)->SetVerticalAlwaysVisible(false); diff --git a/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoPartialClasses.cpp index 3a93a23b..0628e0a7 100644 --- a/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/TriplePhaseImageButton/UI/Source/DemoPartialClasses.cpp @@ -1151,6 +1151,7 @@ namespace demo } (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiStackItemComposition()); (this->button = new ::demo::TriplePhaseButton()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"button"), ::vl::__vwsn::Box(this->button)); (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->button)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetPreferredMinSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(120); __vwsn_temp__.y = static_cast<::vl::vint>(40); return __vwsn_temp__; }()); diff --git a/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp index e7e4b2db..9437d44a 100644 --- a/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Controls/Win11ToolstripMenu/UI/Source/DemoPartialClasses.cpp @@ -103,6 +103,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Win11ToolstripMenu")); } (this->commandCut = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCut"), ::vl::__vwsn::Box(this->commandCut)); { ::vl::__vwsn::This(this->commandCut)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+X")); } @@ -113,6 +114,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCut)); } (this->commandCopy = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandCopy"), ::vl::__vwsn::Box(this->commandCopy)); { ::vl::__vwsn::This(this->commandCopy)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+C")); } @@ -123,6 +125,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandCopy)); } (this->commandPaste = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandPaste"), ::vl::__vwsn::Box(this->commandPaste)); { ::vl::__vwsn::This(this->commandPaste)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+V")); } @@ -133,6 +136,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandPaste)); } (this->commandDelete = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandDelete"), ::vl::__vwsn::Box(this->commandDelete)); { ::vl::__vwsn::This(this->commandDelete)->SetText(::vl::WString::Unmanaged(L"Delete")); } @@ -140,6 +144,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandDelete)); } (this->commandUndo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandUndo"), ::vl::__vwsn::Box(this->commandUndo)); { ::vl::__vwsn::This(this->commandUndo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Z")); } @@ -150,6 +155,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandUndo)); } (this->commandRedo = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandRedo"), ::vl::__vwsn::Box(this->commandRedo)); { ::vl::__vwsn::This(this->commandRedo)->SetShortcutBuilder(::vl::WString::Unmanaged(L"Ctrl+Y")); } @@ -160,6 +166,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandRedo)); } (this->commandExportPrivate = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandExportPrivate"), ::vl::__vwsn::Box(this->commandExportPrivate)); { ::vl::__vwsn::This(this->commandExportPrivate)->SetText(::vl::WString::Unmanaged(L"Export as Private Format")); } @@ -167,6 +174,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandExportPrivate)); } (this->commandExportRtf = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandExportRtf"), ::vl::__vwsn::Box(this->commandExportRtf)); { ::vl::__vwsn::This(this->commandExportRtf)->SetText(::vl::WString::Unmanaged(L"Export as Rich Text Format")); } @@ -174,6 +182,7 @@ namespace demo ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->commandExportRtf)); } (this->commandExportHtml = new ::vl::presentation::controls::GuiToolstripCommand()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"commandExportHtml"), ::vl::__vwsn::Box(this->commandExportHtml)); { ::vl::__vwsn::This(this->commandExportHtml)->SetText(::vl::WString::Unmanaged(L"Export as HTML")); } @@ -182,6 +191,7 @@ namespace demo } { (this->menuEdit = new ::vl::presentation::controls::GuiToolstripMenu(::vl::presentation::theme::ThemeName::Menu, static_cast<::vl::presentation::controls::GuiControl*>(nullptr))); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"menuEdit"), ::vl::__vwsn::Box(this->menuEdit)); } { (this->__vwsn_precompile_0 = new ::vl::presentation::controls::GuiToolstripGroupContainer(::vl::presentation::theme::ThemeName::CustomControl)); diff --git a/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldPartialClasses.cpp b/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldPartialClasses.cpp index 91ff07d8..3ced2518 100644 --- a/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldPartialClasses.cpp +++ b/Tutorial/GacUI_HelloWorlds/MVVM/UI/Source/HelloWorldPartialClasses.cpp @@ -598,6 +598,7 @@ namespace helloworld } { (this->textBoxUserName = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxUserName"), ::vl::__vwsn::Box(this->textBoxUserName)); } (this->__vwsn_precompile_6 = ::vl::__vwsn::This(this->textBoxUserName)->GetBoundsComposition()); { @@ -661,6 +662,7 @@ namespace helloworld } { (this->textBoxPassword = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxPassword"), ::vl::__vwsn::Box(this->textBoxPassword)); } { ::vl::__vwsn::This(this->textBoxPassword)->SetPasswordChar(::vl::__vwsn::Parse(::vl::WString::Unmanaged(L"*"))); @@ -707,6 +709,7 @@ namespace helloworld } { (this->buttonSignUp = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonSignUp"), ::vl::__vwsn::Box(this->buttonSignUp)); } (this->__vwsn_precompile_16 = ::vl::__vwsn::This(this->buttonSignUp)->GetBoundsComposition()); { @@ -723,6 +726,7 @@ namespace helloworld } { (this->buttonCancel = new ::vl::presentation::controls::GuiButton(::vl::presentation::theme::ThemeName::Button)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"buttonCancel"), ::vl::__vwsn::Box(this->buttonCancel)); } (this->__vwsn_precompile_17 = ::vl::__vwsn::This(this->buttonCancel)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x64 index a0aa2cadda0e9e4f9e2f5cdd444d448027a641b4..fb0e66631383fc385e14c214d387737853e134ab 100644 GIT binary patch delta 579 zcmaJ-O-LJ25YEePmf0*OuL#M4v4(mHg=$o2U?ANX5{p71Efzf% z`-w-zOOK`CsYOZ;A_&Fy=(YFOyO+}0O{kuH@Vy!4ee=!t=KNTkAB#^l1+VgiEoBxp zWdh%od#I^*hq8&@iDG-b-C25JSr41d#!?XCQn9e6enTrYhDvH0`>6w{t~`9Aod_(a zH;|)wF@P^L$@eae@-6k;z+5xz^i>m4NZKaq3uU}@C4Sh1 zknwpz3KeB%9G7vn;*20|%Nuy7&m`^#CJHX$onzwG;#2H+5?#)#8sYt787~9bpDg34 zMXsOu68r4PvJ2Q`Cn1Bho|7`af3O2YysYEn;=lfCUt6Nan!g>18CUWGtL!s!qPix# zkQis>+s_F{?$6l8j#pyVij$A}^iqG%8T|2DA_>pWL+9>IzXFpzocTq3^$8gw{Piom b)m~=_E?1BEr(M>+KIdal6-Laus#^a57Y4K| delta 558 zcmZ{g!D|yy5XPNuHqIuoc`9^Qj3Iamg_zVs8}=aTr64ruMM%4EcVB6dNKAwjY$=!) z#2&O1{ltrh>OpUc(32ObP(-2FYyAVfiFz$~a1tZv!3XmV?=dsK@6G-W?eEa*nuRCU z7;4rOcC8Z5CH#}wL%&Zica}N}^EZ6|V!Pd(H!U1kqgYIAJEcKQ2^Z`<*6m}c+Gnt7 zKf|z5TbGmX2_HCv=X?qGoiU6$IU2?fJ}WxuoEE(c4d#rxn7O5lVMg7jbmv3hsm+av@_wGabgg znF%DqKV;RX_9pL1$EIfZL9S2g-CN@5szfEpco7)+59@1W|6|PsPD{RK~a|QV}n+E`CO{ltmP~Sd*^1aTVWUewbx^ fiVL#w@9`u)PkVwWQbxe;Kf_;{^Jr`DuQ&e}V3@6W diff --git a/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 b/Tutorial/GacUI_HelloWorlds/UIRes/Xml.bin.x86 index 344249cc4fb7365761353f09bb3170417eb49f0a..511af69f8d6fdf76a66908bcedce56ef4619f439 100644 GIT binary patch delta 665 zcmY*V&ubG=5YF4|Zr<)j^MXHi)mk?#(jeB>ibjK0+Jo)EL=RF(x1NA)1i)(G*zn|bqQzHh#nl_j>a#9o$@_>%Mx zse5o(9YZ;JAD`4++cJs2C-$wYt@*hN#o}bM*_e|N9;jRJOWlgyTFyy#>tg?}Zl+m3 zgZJ7nu4y|_()Qx1md6imnpv38eWWuSc$4Bd6$q4g7K>&M zH_an>F4tnV4k6!17JRs0bj2GzUPkkE*{I8w0JF9;fgP635@7lU<;t2vXyx#PZrjSe zTD0sEypZFVbg=4k{HzE=>Cz=I>JOohva11y;yG}2PQwaB9!I6x##b6#(BE}m!1Tm_ z`P-E?jdRg2AUit|^WsL}ppTdqe9lt1Gh0BDa0TC`9wO!^wQoHek4Q(+`#=%*&%&s> zgt*j2A4G?i(=a(s5H@BFNW*1%FVGz!WdCW7*TE=FGk+#|-%OI3PxK%qxEB;oSf=ZgpGLHkapWY4~>Ec<|K}6j@S9^2CKh;ge AYybcN delta 696 zcmY+BOK1~O6o$RYJnqb-%&iq?tTD}4#UR?3U_+ojx==w(yO2ukOp+^x8flY2im00g z(Tch#^xq2AO&2bTpmgO*x)ogpcdpzN*D6vyGflM)+;cAH_5EjVdxNz%*z0^8rm~ED z+($b;f>-eYd{GV@wD)X(p>N)6&R6Dgx$$~^wjyhIt{lftrPob#YC^wLGgYtN#6H!- ziaLz@>QQ`BGpH-Qm{EK1UA=@mQeaZcH-25?cxp_b zC^^QsgWHCStHcR&{pJ{ArkC2;)#&UKdRd#V%Gs)H+F;fpW~0w?SR732iQSDHN|uM0 zbXu18=Dp=yfnVadAYE(*96t&I7XyLOAdMu&H;WuG-;GxM=yTNQ6t1^Wr@ZNl|Kd*y zEqtRnN$Ob&Ty#&LkLI2J8{^Etv*}U8>JG)bD%omj{llnzo-7?}>U3yr`*epkfC zZ{3L$C(Gk-HGx{0W0AI7EZ@SaF0fV3()+vAmBC}8E)aD$eN7UP9;#s~xEv(Her83S He^t3Zxi8E^ diff --git a/Tutorial/GacUI_Layout/Flow/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/Flow/UI/Source/DemoPartialClasses.cpp index 5e1956a0..e0e1187f 100644 --- a/Tutorial/GacUI_Layout/Flow/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/Flow/UI/Source/DemoPartialClasses.cpp @@ -586,10 +586,12 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetText(::vl::WString::Unmanaged(L"Flow")); } (this->groupAxis = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupAxis"), ::vl::__vwsn::Box(this->groupAxis)); { ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->groupAxis)); } (this->groupAlignment = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupAlignment"), ::vl::__vwsn::Box(this->groupAlignment)); { ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->groupAlignment)); } @@ -618,6 +620,7 @@ namespace demo } { (this->groupBoxAxis = new ::vl::presentation::controls::GuiControl(::vl::presentation::theme::ThemeName::GroupBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupBoxAxis"), ::vl::__vwsn::Box(this->groupBoxAxis)); } (this->__vwsn_precompile_21 = ::vl::__vwsn::This(this->groupBoxAxis)->GetContainerComposition()); { @@ -794,6 +797,7 @@ namespace demo } { (this->groupBoxAlignment = new ::vl::presentation::controls::GuiControl(::vl::presentation::theme::ThemeName::GroupBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupBoxAlignment"), ::vl::__vwsn::Box(this->groupBoxAlignment)); } (this->__vwsn_precompile_33 = ::vl::__vwsn::This(this->groupBoxAlignment)->GetContainerComposition()); { @@ -918,6 +922,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_36)->SetSite(static_cast<::vl::vint>(2), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(3)); } (this->flowLayout = new ::vl::presentation::compositions::GuiFlowComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"flowLayout"), ::vl::__vwsn::Box(this->flowLayout)); { ::vl::__vwsn::This(this->flowLayout)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(10); __vwsn_temp__.top = static_cast<::vl::vint>(10); __vwsn_temp__.right = static_cast<::vl::vint>(10); __vwsn_temp__.bottom = static_cast<::vl::vint>(10); return __vwsn_temp__; }()); } diff --git a/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoPartialClasses.cpp index 64f37701..13a0bd06 100644 --- a/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/Responsive1/UI/Source/DemoPartialClasses.cpp @@ -1130,6 +1130,7 @@ Class (::demo::ResponsiveGroupControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveGroupComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiStackComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetPadding(static_cast<::vl::vint>(10)); @@ -1522,6 +1523,7 @@ Class (::demo::ResponsiveStackControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveStackComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiStackComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_4)->SetPadding(static_cast<::vl::vint>(10)); @@ -1914,6 +1916,7 @@ Class (::demo::ResponsiveViewControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_3)); } (this->responsive = new ::vl::presentation::compositions::GuiResponsiveViewComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"responsive"), ::vl::__vwsn::Box(this->responsive)); (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiResponsiveFixedComposition()); (this->__vwsn_precompile_5 = new ::vl::presentation::compositions::GuiStackComposition()); { @@ -2084,6 +2087,7 @@ Class (::demo::ResponsiveViewControlConstructor) } { (this->documentBox = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"documentBox"), ::vl::__vwsn::Box(this->documentBox)); } { ::vl::__vwsn::This(this->documentBox)->SetEditMode(::vl::presentation::controls::GuiDocumentCommonInterface::EditMode::Editable); diff --git a/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoPartialClasses.cpp index 51715fee..d77fe0f0 100644 --- a/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/Responsive2/UI/Source/DemoPartialClasses.cpp @@ -1677,6 +1677,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(this->self)->SetClientSize([&](){ ::vl::presentation::Size __vwsn_temp__; __vwsn_temp__.x = static_cast<::vl::vint>(800); __vwsn_temp__.y = static_cast<::vl::vint>(600); return __vwsn_temp__; }()); } (this->accountController = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"accountController"), ::vl::__vwsn::Box(this->accountController)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->accountController)); } @@ -1684,6 +1685,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiResponsiveViewComposition()); { (this->videoContainer = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"videoContainer"), ::vl::__vwsn::Box(this->videoContainer)); } { ::vl::__vwsn::This(this->videoContainer)->SetHorizontalAlwaysVisible(false); diff --git a/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoPartialClasses.cpp index 6a624969..dd4ce013 100644 --- a/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/RichTextEmbedding/UI/Source/DemoPartialClasses.cpp @@ -96,6 +96,7 @@ Class (::demo::MainWindowConstructor) } { (this->documentViewer = new ::vl::presentation::controls::GuiDocumentViewer(::vl::presentation::theme::ThemeName::DocumentViewer)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"documentViewer"), ::vl::__vwsn::Box(this->documentViewer)); } (this->__vwsn_precompile_50 = ::vl::__vwsn::This(this->documentViewer)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoPartialClasses.cpp index 2571f115..983be13a 100644 --- a/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/SharedSize/UI/Source/DemoPartialClasses.cpp @@ -945,6 +945,7 @@ Class (::demo::EnglishNumbersControllerTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetColumnOption(static_cast<::vl::vint>(1), [&](){ ::vl::presentation::compositions::GuiCellOption __vwsn_temp__; __vwsn_temp__.composeType = ::vl::presentation::compositions::GuiCellOption::ComposeType::MinSize; return __vwsn_temp__; }()); } (this->content = new ::vl::presentation::compositions::GuiCellComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"content"), ::vl::__vwsn::Box(this->content)); { ::vl::__vwsn::This(this->content)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } @@ -956,6 +957,7 @@ Class (::demo::EnglishNumbersControllerTabPageConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_2)->SetSite(static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->controller = new ::demo::EnglishNumbersController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"controller"), ::vl::__vwsn::Box(this->controller)); (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->controller)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_3)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); @@ -1046,6 +1048,7 @@ Class (::demo::MainWindowConstructor) (this->__vwsn_precompile_1 = new ::vl::presentation::controls::GuiTab(::vl::presentation::theme::ThemeName::Tab)); } (this->sharedSizeListTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sharedSizeListTabPage"), ::vl::__vwsn::Box(this->sharedSizeListTabPage)); (this->__vwsn_precompile_3 = ::vl::__vwsn::This(this->sharedSizeListTabPage)->GetContentComposition()); (this->__vwsn_precompile_4 = new ::vl::presentation::compositions::GuiSharedSizeRootComposition()); { @@ -1087,6 +1090,7 @@ Class (::demo::MainWindowConstructor) ::vl::__vwsn::This(__vwsn_collection_.Obj())->Add(::vl::__vwsn::Box(this->sharedSizeListTabPage)); } (this->sharedSizeFlowTabPage = new ::demo::EnglishNumbersControllerTabPage()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"sharedSizeFlowTabPage"), ::vl::__vwsn::Box(this->sharedSizeFlowTabPage)); (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->sharedSizeFlowTabPage)->GetContentComposition()); { (this->__vwsn_precompile_8 = new ::vl::presentation::controls::GuiScrollContainer(::vl::presentation::theme::ThemeName::ScrollView)); diff --git a/Tutorial/GacUI_Layout/Stack/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/Stack/UI/Source/DemoPartialClasses.cpp index 3a5cab84..9fc987e6 100644 --- a/Tutorial/GacUI_Layout/Stack/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/Stack/UI/Source/DemoPartialClasses.cpp @@ -214,6 +214,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetText(::vl::WString::Unmanaged(L"Stack")); } (this->groupStackDirection = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"groupStackDirection"), ::vl::__vwsn::Box(this->groupStackDirection)); { ::vl::__vwsn::This(this->__vwsn_precompile_0)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->groupStackDirection)); } @@ -322,6 +323,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_12)->SetSite(static_cast<::vl::vint>(5), static_cast<::vl::vint>(0), static_cast<::vl::vint>(1), static_cast<::vl::vint>(1)); } (this->stackLayout = new ::vl::presentation::compositions::GuiStackComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"stackLayout"), ::vl::__vwsn::Box(this->stackLayout)); { ::vl::__vwsn::This(this->stackLayout)->SetExtraMargin([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(10); __vwsn_temp__.top = static_cast<::vl::vint>(10); __vwsn_temp__.right = static_cast<::vl::vint>(10); __vwsn_temp__.bottom = static_cast<::vl::vint>(10); return __vwsn_temp__; }()); } diff --git a/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoPartialClasses.cpp index 812b6ee3..1c0a8ed5 100644 --- a/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Layout/TableSplitter/UI/Source/DemoPartialClasses.cpp @@ -805,6 +805,7 @@ namespace demo } { (this->checkBorder = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkBorder"), ::vl::__vwsn::Box(this->checkBorder)); } { ::vl::__vwsn::This(this->checkBorder)->SetSelected(true); @@ -844,6 +845,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_5)->SetOwnedElement(::vl::Ptr<::vl::presentation::elements::IGuiGraphicsElement>(this->__vwsn_precompile_6)); } (this->table = new ::vl::presentation::compositions::GuiTableComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"table"), ::vl::__vwsn::Box(this->table)); { ::vl::__vwsn::This(this->table)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(0); __vwsn_temp__.top = static_cast<::vl::vint>(0); __vwsn_temp__.right = static_cast<::vl::vint>(0); __vwsn_temp__.bottom = static_cast<::vl::vint>(0); return __vwsn_temp__; }()); } diff --git a/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoPartialClasses.cpp index d2e34edb..ddcd4241 100644 --- a/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Windows/Direct2DClock/UI/Source/DemoPartialClasses.cpp @@ -67,6 +67,7 @@ namespace demo ::vl::__vwsn::This(this->self)->SetText(::vl::WString::Unmanaged(L"Direct2DClock")); } (this->animationBounds = new ::vl::presentation::compositions::GuiBoundsComposition()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"animationBounds"), ::vl::__vwsn::Box(this->animationBounds)); { ::vl::__vwsn::This(this->animationBounds)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(5); __vwsn_temp__.top = static_cast<::vl::vint>(5); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = (- static_cast<::vl::vint>(1)); return __vwsn_temp__; }()); } diff --git a/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoPartialClasses.cpp index 2457036e..9c1182b7 100644 --- a/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Windows/WindowIcon/UI/Source/DemoPartialClasses.cpp @@ -284,6 +284,7 @@ namespace demo (this->__vwsn_precompile_1 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkVisible = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkVisible"), ::vl::__vwsn::Box(this->checkVisible)); } { ::vl::__vwsn::This(this->checkVisible)->SetSelected(true); @@ -300,6 +301,7 @@ namespace demo (this->__vwsn_precompile_2 = new ::vl::presentation::compositions::GuiStackItemComposition()); { (this->checkCustom = new ::vl::presentation::controls::GuiSelectableButton(::vl::presentation::theme::ThemeName::CheckBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"checkCustom"), ::vl::__vwsn::Box(this->checkCustom)); } { ::vl::__vwsn::This(this->checkCustom)->SetSelected(false); diff --git a/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoPartialClasses.cpp index 9f8d8ab8..ee9fd625 100644 --- a/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Binding_Bind/UI/Source/DemoPartialClasses.cpp @@ -215,6 +215,7 @@ namespace demo } { (this->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxA"), ::vl::__vwsn::Box(this->textBoxA)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxA)->GetBoundsComposition()); { @@ -254,6 +255,7 @@ namespace demo } { (this->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxB"), ::vl::__vwsn::Box(this->textBoxB)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->textBoxB)->GetBoundsComposition()); { @@ -293,6 +295,7 @@ namespace demo } { (this->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxC"), ::vl::__vwsn::Box(this->textBoxC)); } { ::vl::__vwsn::This(this->textBoxC)->SetReadonly(true); diff --git a/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoPartialClasses.cpp index 59070008..a01a6a2f 100644 --- a/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Binding_Format/UI/Source/DemoPartialClasses.cpp @@ -198,6 +198,7 @@ namespace demo } { (this->textBoxName = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxName"), ::vl::__vwsn::Box(this->textBoxName)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxName)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoPartialClasses.cpp index d8ea8d60..a2bb6c07 100644 --- a/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Binding_Uri/UI/Source/DemoPartialClasses.cpp @@ -116,6 +116,7 @@ namespace demo } { (this->documentLabel = new ::vl::presentation::controls::GuiDocumentLabel(::vl::presentation::theme::ThemeName::DocumentLabel)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"documentLabel"), ::vl::__vwsn::Box(this->documentLabel)); } (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->documentLabel)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp index 250a7afd..9b404ac2 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp @@ -203,6 +203,7 @@ Class (::demo::MainWindowConstructor) } { (this->textBoxName = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxName"), ::vl::__vwsn::Box(this->textBoxName)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxName)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp index 6d2db030..d591e96d 100644 --- a/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_Cpp/UI/Source/DemoPartialClasses.cpp @@ -133,6 +133,7 @@ namespace demo } { (this->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxA"), ::vl::__vwsn::Box(this->textBoxA)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxA)->GetBoundsComposition()); { @@ -172,6 +173,7 @@ namespace demo } { (this->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxB"), ::vl::__vwsn::Box(this->textBoxB)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->textBoxB)->GetBoundsComposition()); { @@ -211,6 +213,7 @@ namespace demo } { (this->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxC"), ::vl::__vwsn::Box(this->textBoxC)); } { ::vl::__vwsn::This(this->textBoxC)->SetReadonly(true); diff --git a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp index 05a5cd72..942a7658 100644 --- a/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_Script/UI/Source/DemoPartialClasses.cpp @@ -135,6 +135,7 @@ namespace demo } { (this->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxA"), ::vl::__vwsn::Box(this->textBoxA)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxA)->GetBoundsComposition()); { @@ -174,6 +175,7 @@ namespace demo } { (this->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxB"), ::vl::__vwsn::Box(this->textBoxB)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->textBoxB)->GetBoundsComposition()); { @@ -213,6 +215,7 @@ namespace demo } { (this->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxC"), ::vl::__vwsn::Box(this->textBoxC)); } { ::vl::__vwsn::This(this->textBoxC)->SetReadonly(true); diff --git a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp index be586cb9..01f69bc6 100644 --- a/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Event_ViewModel/UI/Source/DemoPartialClasses.cpp @@ -137,6 +137,7 @@ Class (::demo::MainWindowConstructor) } { (this->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxA"), ::vl::__vwsn::Box(this->textBoxA)); } (this->__vwsn_precompile_5 = ::vl::__vwsn::This(this->textBoxA)->GetBoundsComposition()); { @@ -176,6 +177,7 @@ Class (::demo::MainWindowConstructor) } { (this->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxB"), ::vl::__vwsn::Box(this->textBoxB)); } (this->__vwsn_precompile_9 = ::vl::__vwsn::This(this->textBoxB)->GetBoundsComposition()); { @@ -215,6 +217,7 @@ Class (::demo::MainWindowConstructor) } { (this->textBoxC = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxC"), ::vl::__vwsn::Box(this->textBoxC)); } { ::vl::__vwsn::This(this->textBoxC)->SetReadonly(true); diff --git a/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoPartialClasses.cpp index 29633968..4b3d7eb1 100644 --- a/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Member_Field/UI/Source/DemoPartialClasses.cpp @@ -204,6 +204,7 @@ namespace demo } { (this->textBoxA = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxA"), ::vl::__vwsn::Box(this->textBoxA)); } (this->__vwsn_precompile_2 = ::vl::__vwsn::This(this->textBoxA)->GetBoundsComposition()); { @@ -244,6 +245,7 @@ namespace demo } { (this->textBoxB = new ::vl::presentation::controls::GuiSinglelineTextBox(::vl::presentation::theme::ThemeName::SinglelineTextBox)); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"textBoxB"), ::vl::__vwsn::Box(this->textBoxB)); } (this->__vwsn_precompile_7 = ::vl::__vwsn::This(this->textBoxB)->GetBoundsComposition()); { diff --git a/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoPartialClasses.cpp index 7c20dc0f..8b4def47 100644 --- a/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Member_Property/UI/Source/DemoPartialClasses.cpp @@ -258,6 +258,7 @@ namespace demo ::vl::__vwsn::This(this->__vwsn_precompile_0)->SetText(::vl::WString::Unmanaged(L"Member_Property")); } (this->myControl = new ::demo::MyControl()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"myControl"), ::vl::__vwsn::Box(this->myControl)); (this->__vwsn_precompile_1 = ::vl::__vwsn::This(this->myControl)->GetBoundsComposition()); { ::vl::__vwsn::This(this->__vwsn_precompile_1)->SetAlignmentToParent([&](){ ::vl::presentation::Margin __vwsn_temp__; __vwsn_temp__.left = static_cast<::vl::vint>(10); __vwsn_temp__.top = static_cast<::vl::vint>(10); __vwsn_temp__.right = (- static_cast<::vl::vint>(1)); __vwsn_temp__.bottom = (- static_cast<::vl::vint>(1)); return __vwsn_temp__; }()); @@ -310,6 +311,7 @@ Class (::demo::MyControlConstructor) ::vl::__vwsn::This(this->__vwsn_precompile_7)->SetMinSizeLimitation(::vl::presentation::compositions::GuiGraphicsComposition::MinSizeLimitation::LimitToElementAndChildren); } (this->optionGroup = new ::vl::presentation::controls::GuiSelectableButton::MutexGroupController()); + ::vl::__vwsn::This(__vwsn_this_)->SetNamedObject(::vl::WString::Unmanaged(L"optionGroup"), ::vl::__vwsn::Box(this->optionGroup)); { ::vl::__vwsn::This(this->self)->AddComponent(static_cast<::vl::presentation::controls::GuiComponent*>(this->optionGroup)); }