Update Release

This commit is contained in:
vczh
2024-09-29 00:14:53 -07:00
parent 19c3265deb
commit 34ed13b84a
20 changed files with 5859 additions and 5066 deletions
+3 -2
View File
@@ -219,7 +219,7 @@ Helper Functions
if (desc.imageId)
{
vint index = trace.imageCreations->Keys().IndexOf(desc.imageId.Value());
if (index!= 1)
if (index != -1)
{
auto binary = trace.imageCreations->Values()[index].imageData;
binary->SeekFromBegin(0);
@@ -1563,7 +1563,8 @@ UnitTestSnapshotFileNode
WString GetName() override
{
return file.GetFilePath().GetName();
auto name = file.GetFilePath().GetName();
return name.Left(name.Length() - 5);
}
LazyList<Ptr<IUnitTestSnapshotFileNode>> GetChildren() override
+30 -4
View File
@@ -186,8 +186,21 @@ void GacUIUnitTest_Start(const WString& appName, Nullable<UnitTestScreenConfig>
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.");
bool skipWriting = false;
if (snapshotFile.Exists())
{
auto previousLog = snapshotFile.ReadAllTextByBom();
if (previousLog == textLog)
{
skipWriting = true;
}
}
if (!skipWriting)
{
bool succeeded = snapshotFile.WriteAllText(textLog, true, stream::BomEncoder::Utf8);
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
}
}
#undef ERROR_MESSAGE_PREFIX
}
@@ -209,8 +222,21 @@ void GacUIUnitTest_Start_WithResourceAsText(const WString& appName, Nullable<Uni
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.");
bool skipWriting = false;
if (snapshotFile.Exists())
{
auto previousLog = snapshotFile.ReadAllTextByBom();
if (previousLog == workflow)
{
skipWriting = true;
}
}
if (!skipWriting)
{
bool succeeded = snapshotFile.WriteAllText(workflow, true, stream::BomEncoder::Utf8);
CHECK_ERROR(succeeded, ERROR_MESSAGE_PREFIX L"Failed to write the snapshot file.");
}
}
previousMainProxy(protocol, context);
});
+72 -48
View File
@@ -329,7 +329,7 @@ Keys
}
/***********************************************************************
Mouse
Mouse Move Events
***********************************************************************/
void MouseMove(NativePoint position)
@@ -348,52 +348,73 @@ Mouse
}
/***********************************************************************
Mouse (Left)
Mouse Wheel Events
***********************************************************************/
void _LDown(Nullable<NativePoint> 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
}
/***********************************************************************
Mouse Click Events
***********************************************************************/
void _LUp(Nullable<NativePoint> 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
}
#define DEFINE_MOUSE_ACTIONS(PREFIX, LOWER, UPPER)\
void _ ## PREFIX ## Down(Nullable<NativePoint> position = {})\
{\
if (position) MouseMove(position.Value());\
CHECK_ERROR(!LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"Down(...)#" L"The button should not be being pressed.");\
LOWER ## Pressing = true;\
UseEvents().OnIOButtonDown({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
}\
void _ ## PREFIX ## Up(Nullable<NativePoint> position = {})\
{\
if (position) MouseMove(position.Value());\
CHECK_ERROR(LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"Up(...)#" L"The button should be being pressed.");\
LOWER ## Pressing = false;\
UseEvents().OnIOButtonUp({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
}\
void _ ## PREFIX ## DBClick(Nullable<NativePoint> position = {})\
{\
if (position) MouseMove(position.Value());\
CHECK_ERROR(!LOWER ## Pressing, CLASS_PREFIX L"_" L ## #PREFIX L"DBClick(...)#" L"The button should not be being pressed.");\
LOWER ## Pressing = true;\
UseEvents().OnIOButtonDoubleClick({ remoteprotocol::IOMouseButton::UPPER,MakeMouseInfo() });\
}\
void PREFIX ## Click(Nullable<NativePoint> position = {})\
{\
_ ## PREFIX ## Down(position);\
_ ## PREFIX ## Up(position);\
}\
void PREFIX ## Click(Nullable<NativePoint> position, bool ctrl, bool shift, bool alt)\
{\
if (ctrl) _KeyDown(VKEY::KEY_CONTROL);\
if (shift) _KeyDown(VKEY::KEY_SHIFT);\
if (alt) _KeyDown(VKEY::KEY_MENU);\
PREFIX ## Click(position);\
if (alt) _KeyUp(VKEY::KEY_MENU);\
if (shift) _KeyUp(VKEY::KEY_SHIFT);\
if (ctrl) _KeyUp(VKEY::KEY_CONTROL);\
}\
void PREFIX ## DBClick(Nullable<NativePoint> position = {})\
{\
_ ## PREFIX ## Down(position);\
_ ## PREFIX ## Up(position);\
_ ## PREFIX ## DBClick(position);\
_ ## PREFIX ## Up(position);\
}\
void PREFIX ## DBClick(Nullable<NativePoint> position, bool ctrl, bool shift, bool alt)\
{\
if (ctrl) _KeyDown(VKEY::KEY_CONTROL);\
if (shift) _KeyDown(VKEY::KEY_SHIFT);\
if (alt) _KeyDown(VKEY::KEY_MENU);\
PREFIX ## DBClick(position);\
if (alt) _KeyUp(VKEY::KEY_MENU);\
if (shift) _KeyUp(VKEY::KEY_SHIFT);\
if (ctrl) _KeyUp(VKEY::KEY_CONTROL);\
}\
void _LDBClick(Nullable<NativePoint> 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
}
DEFINE_MOUSE_ACTIONS(L, left, Left);
DEFINE_MOUSE_ACTIONS(M, middle, Middle);
DEFINE_MOUSE_ACTIONS(R, right, Right);
void LClick(Nullable<NativePoint> position = {})
{
_LDown(position);
_LUp(position);
}
void LDBClick(Nullable<NativePoint> position = {})
{
_LDown(position);
_LUp(position);
_LDBClick(position);
_LUp(position);
}
#undef DEFINE_MOUSE_ACTIONS
#undef CLASS_PREFIX
};
@@ -808,7 +829,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
remoteprotocol::ElementMeasuring_FontHeight measuring;
measuring.fontFamily = arguments.font.Value().fontFamily;
measuring.fontSize = arguments.font.Value().size;
measuring.height = measuring.fontSize;
measuring.height = measuring.fontSize + 4;
measuringForNextRendering.fontHeights->Add(measuring);
}
break;
@@ -860,7 +881,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
{
// width of the text is 0
// insert a line break when there is no space horizontally
textHeight = size * From(lines)
textHeight = 4 + size * From(lines)
.Select([columns = width / size](vint length)
{
if (columns == 0)
@@ -878,7 +899,7 @@ IGuiRemoteProtocolMessages (Elements - SolidLabel)
{
// width of the text is width of the longest line
textWidth = size * From(lines).Max();
textHeight = size * lines.Count();
textHeight = 4 + size * lines.Count();
}
if (!measuringForNextRendering.minSizes)
@@ -1316,8 +1337,8 @@ UnitTestRemoteProtocol
transformed
});
candidateRenderingResult = {};
return true;
}
return true;
}
return false;
}
@@ -1402,6 +1423,7 @@ UnitTestRemoteProtocol
const UnitTestFrameworkConfig& frameworkConfig;
WString appName;
collections::List<EventPair> processRemoteEvents;
vint lastFrameIndex = -1;
vint nextEventIndex = 0;
bool stopped = false;
@@ -1457,12 +1479,14 @@ IGuiRemoteProtocol
{
if (LogRenderingResult())
{
vl::unittest::UnitTest::PrintMessage(L"Execute idle frame[" + itow(nextEventIndex) + L"]", vl::unittest::UnitTest::MessageKind::Info);
auto [name, func] = processRemoteEvents[nextEventIndex];
vl::unittest::UnitTest::PrintMessage(L"Execute idle frame[" + (name ? name.Value() : itow(nextEventIndex)) + L"]", vl::unittest::UnitTest::MessageKind::Info);
CHECK_ERROR(lastFrameIndex != loggedTrace.frames->Count() - 1, ERROR_MESSAGE_PREFIX L"No rendering occured after the last idle frame.");
lastFrameIndex = loggedTrace.frames->Count() - 1;
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();
+1077 -852
View File
File diff suppressed because it is too large Load Diff
+584 -427
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -9038,9 +9038,11 @@ GuiPredefinedInstanceLoadersPlugin
ADD_VIRTUAL_CONTROL (MenuSplitter, GuiControl, MenuSplitter );
ADD_VIRTUAL_CONTROL (MenuBarButton, GuiToolstripButton, MenuBarButton );
ADD_VIRTUAL_CONTROL (MenuItemButton, GuiToolstripButton, MenuItemButton );
ADD_VIRTUAL_CONTROL (ToolstripToolBarInMenu, GuiToolstripToolBar, ToolstripToolBarInMenu );
ADD_VIRTUAL_CONTROL (ToolstripDropdownButton, GuiToolstripButton, ToolstripDropdownButton );
ADD_VIRTUAL_CONTROL (ToolstripSplitButton, GuiToolstripButton, ToolstripSplitButton );
ADD_VIRTUAL_CONTROL (ToolstripSplitter, GuiControl, ToolstripSplitter );
ADD_VIRTUAL_CONTROL (ToolstripSplitterInMenu, GuiControl, ToolstripSplitterInMenu );
ADD_VIRTUAL_CONTROL (RibbonSmallButton, GuiToolstripButton, RibbonSmallButton );
ADD_VIRTUAL_CONTROL (RibbonSmallDropdownButton, GuiToolstripButton, RibbonSmallDropdownButton );
ADD_VIRTUAL_CONTROL (RibbonSmallSplitButton, GuiToolstripButton, RibbonSmallSplitButton );
+53 -26
View File
@@ -1830,12 +1830,26 @@ Type Declaration (Extra)
CLASS_MEMBER_CONSTRUCTOR(GuiSelectableButton::MutexGroupController*(), NO_PARAMETER)
END_CLASS_MEMBER(GuiSelectableButton::MutexGroupController)
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback)
BEGIN_INTERFACE_MEMBER(list::IItemProviderCallback)
CLASS_MEMBER_BASE(IDescriptable)
CLASS_MEMBER_METHOD(OnAttached, {L"provider"})
CLASS_MEMBER_METHOD(OnItemModified, {L"start" _ L"count" _ L"newCount" _ L"itemReferenceUpdated"})
END_INTERFACE_MEMBER(GuiListControl::IItemProviderCallback)
END_INTERFACE_MEMBER(list::IItemProviderCallback)
BEGIN_INTERFACE_MEMBER(list::IItemProvider)
CLASS_MEMBER_BASE(IDescriptable)
CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
CLASS_MEMBER_METHOD(PushEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(PopEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(IsEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(Count, NO_PARAMETER)
CLASS_MEMBER_METHOD(GetTextValue, { L"itemIndex" })
CLASS_MEMBER_METHOD(GetBindingValue, { L"itemIndex" })
CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
END_INTERFACE_MEMBER(list::IItemProvider)
BEGIN_INTERFACE_MEMBER_NOPROXY(GuiListControl::IItemArrangerCallback)
CLASS_MEMBER_BASE(IDescriptable)
@@ -1855,22 +1869,8 @@ Type Declaration (Extra)
ENUM_CLASS_ITEM(NotMoved)
END_ENUM_ITEM(GuiListControl::EnsureItemVisibleResult)
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemProvider)
CLASS_MEMBER_BASE(IDescriptable)
CLASS_MEMBER_METHOD(AttachCallback, {L"value"})
CLASS_MEMBER_METHOD(DetachCallback, {L"value"})
CLASS_MEMBER_METHOD(PushEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(PopEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(IsEditing, NO_PARAMETER)
CLASS_MEMBER_METHOD(Count, NO_PARAMETER)
CLASS_MEMBER_METHOD(GetTextValue, { L"itemIndex" })
CLASS_MEMBER_METHOD(GetBindingValue, { L"itemIndex" })
CLASS_MEMBER_METHOD(RequestView, {L"identifier"})
END_INTERFACE_MEMBER(GuiListControl::IItemProvider)
BEGIN_INTERFACE_MEMBER(GuiListControl::IItemArranger)
CLASS_MEMBER_BASE(GuiListControl::IItemProviderCallback)
CLASS_MEMBER_BASE(list::IItemProviderCallback)
CLASS_MEMBER_PROPERTY_FAST(Callback)
CLASS_MEMBER_PROPERTY_READONLY_FAST(TotalSize)
@@ -1887,7 +1887,7 @@ Type Declaration (Extra)
END_INTERFACE_MEMBER(GuiListControl::IItemArranger)
BEGIN_CLASS_MEMBER(ItemProviderBase)
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
CLASS_MEMBER_BASE(list::IItemProvider)
END_CLASS_MEMBER(ItemProviderBase)
BEGIN_CLASS_MEMBER(RangedItemArrangerBase)
@@ -1931,7 +1931,7 @@ Type Declaration (Extra)
END_CLASS_MEMBER(TextItem)
BEGIN_CLASS_MEMBER(TextItemProvider)
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
CLASS_MEMBER_BASE(list::IItemProvider)
CLASS_MEMBER_BASE(ITextItemView)
END_CLASS_MEMBER(TextItemProvider)
@@ -2001,7 +2001,7 @@ Type Declaration (Extra)
END_CLASS_MEMBER(ListViewColumn)
BEGIN_CLASS_MEMBER(ListViewItemProvider)
CLASS_MEMBER_BASE(GuiListControl::IItemProvider)
CLASS_MEMBER_BASE(list::IItemProvider)
CLASS_MEMBER_BASE(IListViewItemView)
CLASS_MEMBER_BASE(ListViewColumnItemArranger::IColumnItemView)
END_CLASS_MEMBER(ListViewItemProvider)
@@ -2021,6 +2021,7 @@ Type Declaration (Extra)
CLASS_MEMBER_METHOD(GetParentMenuService, NO_PARAMETER)
CLASS_MEMBER_METHOD(GetPreferredDirection, NO_PARAMETER)
CLASS_MEMBER_METHOD(GetHostThemeName, NO_PARAMETER)
CLASS_MEMBER_METHOD(IsActiveState, NO_PARAMETER)
CLASS_MEMBER_METHOD(IsSubMenuActivatedByMouseDown, NO_PARAMETER)
CLASS_MEMBER_METHOD(MenuItemExecuted, NO_PARAMETER)
@@ -2360,6 +2361,26 @@ Type Declaration (Extra)
CLASS_MEMBER_BASE(IDataProcessorCallback)
END_CLASS_MEMBER(DataProvider)
BEGIN_CLASS_MEMBER(GuiBindableTextList::ItemSource)
CLASS_MEMBER_BASE(ItemProviderBase)
CLASS_MEMBER_BASE(ITextItemView)
END_CLASS_MEMBER(GuiBindableTextList::ItemSource)
BEGIN_CLASS_MEMBER(GuiBindableListView::ItemSource)
CLASS_MEMBER_BASE(ItemProviderBase)
CLASS_MEMBER_BASE(IListViewItemView)
CLASS_MEMBER_BASE(ListViewColumnItemArranger::IColumnItemView)
END_CLASS_MEMBER(GuiBindableListView::ItemSource)
BEGIN_CLASS_MEMBER(GuiBindableTreeView::ItemSourceNode)
CLASS_MEMBER_BASE(INodeProvider)
END_CLASS_MEMBER(GuiBindableTreeView::ItemSourceNode)
BEGIN_CLASS_MEMBER(GuiBindableTreeView::ItemSource)
CLASS_MEMBER_BASE(NodeRootProviderBase)
CLASS_MEMBER_BASE(ITreeViewItemView)
END_CLASS_MEMBER(GuiBindableTreeView::ItemSource)
/***********************************************************************
Type Declaration (Class)
***********************************************************************/
@@ -2582,7 +2603,7 @@ Type Declaration (Class)
BEGIN_CLASS_MEMBER(GuiListControl)
CLASS_MEMBER_BASE(GuiScrollView)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiListControl, GuiListControl::IItemProvider*, itemProvider, bool, acceptFocus)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_3(GuiListControl, list::IItemProvider*, itemProvider, bool, acceptFocus)
CLASS_MEMBER_GUIEVENT(AdoptedSizeInvalidated)
CLASS_MEMBER_GUIEVENT(ItemLeftButtonDown)
@@ -2610,7 +2631,7 @@ Type Declaration (Class)
BEGIN_CLASS_MEMBER(GuiSelectableListControl)
CLASS_MEMBER_BASE(GuiListControl)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiSelectableListControl, GuiListControl::IItemProvider*, itemProvider)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiSelectableListControl, list::IItemProvider*, itemProvider)
CLASS_MEMBER_GUIEVENT(SelectionChanged)
@@ -2628,7 +2649,7 @@ Type Declaration (Class)
BEGIN_CLASS_MEMBER(GuiVirtualTextList)
CLASS_MEMBER_BASE(GuiSelectableListControl)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTextList, GuiListControl::IItemProvider*, L"itemProvider")
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiVirtualTextList, list::IItemProvider*, L"itemProvider")
CLASS_MEMBER_GUIEVENT(ItemChecked)
CLASS_MEMBER_PROPERTY_FAST(View)
@@ -2651,14 +2672,14 @@ Type Declaration (Class)
BEGIN_CLASS_MEMBER(GuiListViewBase)
CLASS_MEMBER_BASE(GuiSelectableListControl)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiListViewBase, GuiListControl::IItemProvider*, itemProvider)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_2(GuiListViewBase, list::IItemProvider*, itemProvider)
CLASS_MEMBER_GUIEVENT(ColumnClicked)
END_CLASS_MEMBER(GuiListViewBase)
BEGIN_CLASS_MEMBER(GuiVirtualListView)
CLASS_MEMBER_BASE(GuiListViewBase)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualListView, GuiListControl::IItemProvider*, itemProvider)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualListView, list::IItemProvider*, itemProvider)
CLASS_MEMBER_PROPERTY_FAST(View)
END_CLASS_MEMBER(GuiVirtualListView)
@@ -3030,7 +3051,7 @@ Type Declaration (Class)
BEGIN_CLASS_MEMBER(GuiVirtualDataGrid)
CLASS_MEMBER_BASE(GuiVirtualListView)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualDataGrid, GuiListControl::IItemProvider*, itemProvider)
CONTROL_CONSTRUCTOR_CONTROLT_TEMPLATE_INHERITANCE_2(GuiVirtualDataGrid, list::IItemProvider*, itemProvider)
CLASS_MEMBER_PROPERTY_GUIEVENT_READONLY_FAST(SelectedCell)
CLASS_MEMBER_PROPERTY_READONLY_FAST(ItemProvider)
@@ -3875,6 +3896,12 @@ Type Declaration (Class)
CLASS_MEMBER_PROPERTY_FAST(DateLocale)
CLASS_MEMBER_PROPERTY_GUIEVENT_FAST(Date)
CLASS_MEMBER_PROPERTY_FAST(Font)
CLASS_MEMBER_PROPERTY_READONLY_FAST(YearCombo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(MonthCombo)
CLASS_MEMBER_PROPERTY_READONLY_FAST(DayRows)
CLASS_MEMBER_PROPERTY_READONLY_FAST(DayColumns)
CLASS_MEMBER_METHOD(GetDayButton, { L"row" _ L"column" })
CLASS_MEMBER_METHOD(GetDateOfDayButton, { L"row" _ L"column" })
END_CLASS_MEMBER(GuiCommonDatePickerLook)
BEGIN_CLASS_MEMBER(GuiCommonScrollViewLook)
+14 -10
View File
@@ -374,9 +374,9 @@ Type List (Controls)
F(presentation::controls::GuiSaveFileDialog)\
F(presentation::controls::GuiSelectableButton::GroupController)\
F(presentation::controls::GuiSelectableButton::MutexGroupController)\
F(presentation::controls::GuiListControl::IItemProviderCallback)\
F(presentation::controls::list::IItemProviderCallback)\
F(presentation::controls::list::IItemProvider)\
F(presentation::controls::GuiListControl::IItemArrangerCallback)\
F(presentation::controls::GuiListControl::IItemProvider)\
F(presentation::controls::GuiListControl::EnsureItemVisibleResult)\
F(presentation::controls::GuiListControl::IItemArranger)\
F(presentation::controls::list::ItemProviderBase)\
@@ -443,6 +443,10 @@ Type List (Controls)
F(presentation::controls::list::DataReverseSorter)\
F(presentation::controls::list::DataColumn)\
F(presentation::controls::list::DataProvider)\
F(presentation::controls::GuiBindableTextList::ItemSource)\
F(presentation::controls::GuiBindableListView::ItemSource)\
F(presentation::controls::GuiBindableTreeView::ItemSourceNode)\
F(presentation::controls::GuiBindableTreeView::ItemSource)\
#define GUIREFLECTIONCONTROLS_CLASS_TYPELIST(F)\
F(presentation::controls::GuiControl)\
@@ -784,9 +788,9 @@ Interface Proxy (Compositions)
Interface Proxy (Controls)
***********************************************************************/
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::GuiListControl::IItemProviderCallback)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IItemProviderCallback)
void OnAttached(presentation::controls::GuiListControl::IItemProvider* provider)override
void OnAttached(presentation::controls::list::IItemProvider* provider)override
{
INVOKE_INTERFACE_PROXY(OnAttached, provider);
}
@@ -797,14 +801,14 @@ Interface Proxy (Controls)
}
END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemProviderCallback)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::GuiListControl::IItemProvider)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IItemProvider)
bool AttachCallback(presentation::controls::GuiListControl::IItemProviderCallback* value)override
bool AttachCallback(presentation::controls::list::IItemProviderCallback* value)override
{
INVOKEGET_INTERFACE_PROXY(AttachCallback, value);
}
bool DetachCallback(presentation::controls::GuiListControl::IItemProviderCallback* value)override
bool DetachCallback(presentation::controls::list::IItemProviderCallback* value)override
{
INVOKEGET_INTERFACE_PROXY(DetachCallback, value);
}
@@ -846,7 +850,7 @@ Interface Proxy (Controls)
END_INTERFACE_PROXY(presentation::controls::GuiListControl::IItemProvider)
BEGIN_INTERFACE_PROXY_SHAREDPTR(presentation::controls::GuiListControl::IItemArranger,
presentation::controls::GuiListControl::IItemProviderCallback
presentation::controls::list::IItemProviderCallback
)
void AttachListControl(presentation::controls::GuiListControl* value)override
@@ -1103,7 +1107,7 @@ Interface Proxy (Controls)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IDataGridContext)
presentation::controls::GuiListControl::IItemProvider* GetItemProvider()override
presentation::controls::list::IItemProvider* GetItemProvider()override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemProvider);
}
@@ -1170,7 +1174,7 @@ Interface Proxy (Controls)
BEGIN_INTERFACE_PROXY_NOPARENT_SHAREDPTR(presentation::controls::list::IDataProcessorCallback)
presentation::controls::GuiListControl::IItemProvider* GetItemProvider()override
presentation::controls::list::IItemProvider* GetItemProvider()override
{
INVOKEGET_INTERFACE_PROXY_NOPARAMS(GetItemProvider);
}
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large Load Diff
@@ -154,12 +154,16 @@ namespace vl
IMPL_CPP_TYPE_INFO(darkskin::ToolstripButtonTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripDropdownButtonTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripInMenuTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripInMenuTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripMenuTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitArrowTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitButtonTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterInMenuTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterInMenuTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplate)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripSplitterTemplateConstructor)
IMPL_CPP_TYPE_INFO(darkskin::ToolstripTemplate)
@@ -1365,6 +1369,21 @@ namespace vl
CLASS_MEMBER_FIELD(self)
END_CLASS_MEMBER(::darkskin::ToolstripDropdownButtonTemplateConstructor)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplate)
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
CLASS_MEMBER_BASE(::darkskin::ToolstripInMenuTemplateConstructor)
CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripInMenuTemplate*(), NO_PARAMETER)
END_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplate)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplateConstructor)
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripInMenuTemplateConstructor>(), NO_PARAMETER)
CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripInMenuTemplate_Initialize, { L"__vwsn_this_" })
CLASS_MEMBER_FIELD(__vwsn_precompile_0)
CLASS_MEMBER_FIELD(__vwsn_precompile_1)
CLASS_MEMBER_FIELD(container)
END_CLASS_MEMBER(::darkskin::ToolstripInMenuTemplateConstructor)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripMenuTemplate)
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiMenuTemplate)
CLASS_MEMBER_BASE(::darkskin::ToolstripMenuTemplateConstructor)
@@ -1423,6 +1442,22 @@ namespace vl
CLASS_MEMBER_FIELD(self)
END_CLASS_MEMBER(::darkskin::ToolstripSplitButtonTemplateConstructor)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplate)
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
CLASS_MEMBER_CONSTRUCTOR(::darkskin::ToolstripSplitterInMenuTemplate*(), NO_PARAMETER)
END_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplate)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::darkskin::ToolstripSplitterInMenuTemplateConstructor>(), NO_PARAMETER)
CLASS_MEMBER_METHOD(__vwsn_darkskin_ToolstripSplitterInMenuTemplate_Initialize, { L"__vwsn_this_" })
CLASS_MEMBER_FIELD(__vwsn_precompile_0)
CLASS_MEMBER_FIELD(__vwsn_precompile_1)
CLASS_MEMBER_FIELD(__vwsn_precompile_2)
CLASS_MEMBER_FIELD(__vwsn_precompile_3)
END_CLASS_MEMBER(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
BEGIN_CLASS_MEMBER(::darkskin::ToolstripSplitterTemplate)
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
CLASS_MEMBER_BASE(::darkskin::ToolstripSplitterTemplateConstructor)
@@ -1693,12 +1728,16 @@ namespace vl
ADD_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripInMenuTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripInMenuTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplate)
ADD_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor)
ADD_TYPE_INFO(::darkskin::ToolstripTemplate)
@@ -167,12 +167,16 @@ namespace vl
DECL_TYPE_INFO(::darkskin::ToolstripButtonTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripDropdownButtonTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripInMenuTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripInMenuTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripMenuTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripSplitArrowTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripSplitButtonTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripSplitterInMenuTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplate)
DECL_TYPE_INFO(::darkskin::ToolstripSplitterTemplateConstructor)
DECL_TYPE_INFO(::darkskin::ToolstripTemplate)
+86 -36
View File
@@ -1299,6 +1299,7 @@ namespace vl
namespace unittest
{
using namespace vl::console;
using namespace vl::collections;
/***********************************************************************
UnitTest
@@ -1435,35 +1436,54 @@ UnitTest
int UnitTest::PrintUsages()
{
PrintMessage(L"Usage: [/D | /R]", MessageKind::Error);
PrintMessage(L"Usage: [/D | /R] {/F:TestFile}", MessageKind::Error);
return 1;
}
int UnitTest::RunAndDisposeTests(Nullable<WString> option)
int UnitTest::RunAndDisposeTests(const collections::Array<WString>& options)
{
if (option)
bool unrecognized = false;
bool _D = false;
bool _R = false;
List<AString> _Fs;
for (auto&& option : From(options))
{
if (option.Value() == L"/D")
if (option == L"/D")
{
suppressFailure = false;
_D = true;
}
else if (option.Value() == L"/R")
else if (option == L"/R")
{
suppressFailure = true;
_R = true;
}
else if (option.Length() > 3 && option.Left(3) == L"/F:")
{
_Fs.Add(wtoa(option.Sub(3, option.Length() - 3)));
}
else
{
return PrintUsages();
unrecognized = true;
}
}
else if (IsDebuggerAttached())
if (unrecognized || (_D && _R))
{
return PrintUsages();
}
if (_D)
{
suppressFailure = false;
}
else
else if (_R)
{
suppressFailure = true;
}
else
{
suppressFailure = !IsDebuggerAttached();
}
{
UnitTestContext context;
@@ -1485,13 +1505,47 @@ UnitTest
auto current = testHead;
while (current)
{
bool skipped = false;
context.failed = false;
PrintMessage(atow(AString::Unmanaged(current->fileName)), MessageKind::File);
context.indentation = L" ";
ExecuteAndSuppressFailure(current->testProc);
if (!testContext->failed) passedFiles++;
totalFiles++;
context.indentation = L"";
if (_Fs.Count() > 0)
{
skipped = true;
for (auto fileName : From(_Fs))
{
if (current->fileName == fileName)
{
skipped = false;
break;
}
else
{
vint len = (vint)strlen(current->fileName);
if (len > fileName.Length())
{
char delimiter = current->fileName[len - fileName.Length() - 1];
if ((delimiter == L'/' || delimiter == L'\\') && current->fileName + (len - fileName.Length()) == fileName)
{
skipped = false;
break;
}
}
}
}
}
if (skipped)
{
PrintMessage(atow(AString::Unmanaged(current->fileName)) + WString::Unmanaged(L" [SKIPPED]"), MessageKind::File);
}
else
{
PrintMessage(atow(AString::Unmanaged(current->fileName)), MessageKind::File);
context.indentation = L" ";
ExecuteAndSuppressFailure(current->testProc);
if (!testContext->failed) passedFiles++;
totalFiles++;
context.indentation = L"";
}
current = current->next;
}
@@ -1506,39 +1560,35 @@ UnitTest
int UnitTest::RunAndDisposeTests(int argc, wchar_t* argv[])
{
if (argc < 3)
if (argc < 2)
{
if (argc == 2)
{
return RunAndDisposeTests({ argv[1] });
}
else
{
return RunAndDisposeTests({});
}
return RunAndDisposeTests({});
}
else
{
return PrintUsages();
Array<WString> options(argc - 1);
for (int i = 1; i < argc; i++)
{
options[i - 1] = WString::Unmanaged(argv[i]);
}
return RunAndDisposeTests(options);
}
}
int UnitTest::RunAndDisposeTests(int argc, char* argv[])
{
if (argc < 3)
if (argc < 2)
{
if (argc == 2)
{
return RunAndDisposeTests({ atow(argv[1]) });
}
else
{
return RunAndDisposeTests({});
}
return RunAndDisposeTests({});
}
else
{
return PrintUsages();
Array<WString> options(argc - 1);
for (int i = 1; i < argc; i++)
{
options[i - 1] = atow(argv[i]);
}
return RunAndDisposeTests(options);
}
}
+1 -1
View File
@@ -9269,7 +9269,7 @@ namespace vl
protected:
static bool IsDebuggerAttached();
static int PrintUsages();
static int RunAndDisposeTests(Nullable<WString> option);
static int RunAndDisposeTests(const collections::Array<WString>& options);
public:
UnitTest() = delete;
+2 -2
View File
@@ -7425,11 +7425,11 @@ InterfaceProxy::Invoke
#define INVOKEGET_INTERFACE_PROXY(METHODNAME, ...)\
PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME, __VA_ARGS__)\
return UnboxValue<decltype(METHODNAME(__VA_ARGS__))>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array<Value>&)(Value_xs(), __VA_ARGS__)))))
return UnboxParameter<decltype(METHODNAME(__VA_ARGS__))>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create(collections::From((collections::Array<Value>&)(Value_xs(), __VA_ARGS__))))).Ref()
#define INVOKEGET_INTERFACE_PROXY_NOPARAMS(METHODNAME)\
PREPARE_INVOKE_INTERFACE_PROXY(METHODNAME)\
return UnboxValue<decltype(METHODNAME())>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create()))
return UnboxParameter<decltype(METHODNAME())>(proxy->Invoke(_interface_proxy_methodInfo, IValueList::Create())).Ref()
/***********************************************************************
Enum
+1 -1
View File
@@ -370,7 +370,7 @@ Regex
/// <li><b>(=regex)</b>: The prefix of the following text should match the regex, but it is not counted in the whole match <b>(DFA incompatible)</b></li>
/// <li><b>(!regex)</b>: Any prefix of the following text should not match the regex, and it is not counted in the whole match <b>(DFA incompatible)</b></li>
/// <li><b>(&lt;#name&gt;regex)</b>: Name the regex "name", and it applies here</li>
/// <li><b>(&lt;&name&gt;)</b>: Copy the named regex "name" here and apply</li>
/// <li><b>(&lt;&amp;name&gt;)</b>: Copy the named regex "name" here and apply</li>
/// </ul>
/// </li>
/// </ul>
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.