Having to manually add categories in the reflection metadata for certain classes is a minor issue for client code. We should be able to detect this automatically, without requiring users to include it in their metadata, by, for example, identifying base classes.
The list of categories and classes I have detected is as follows:
W:\Noesis\NoesisSDK\Native\Src\Packages\Drawing\Types\Include\NsDrawing\Color.h(123): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ImageBrush.cpp(158): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\LinearGradientBrush.cpp(133): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\RadialGradientBrush.cpp(166): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\VisualBrush.cpp(177): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\SolidColorBrush.cpp(165): NsMeta<Category>("Brushes");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\AlternationConverter.cpp(80): NsMeta<Category>("Converters");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\BooleanToVisibilityConverter.cpp(64): NsMeta<Category>("Converters");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ArcSegment.cpp(155): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\BezierSegment.cpp(123): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\CombinedGeometry.cpp(359): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\EllipseGeometry.cpp(225): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\LineSegment.cpp(90): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\LineGeometry.cpp(197): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\PathFigure.cpp(243): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\PathGeometry.cpp(304): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\PolyBezierSegment.cpp(143): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\PolyLineSegment.cpp(128): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\PolyQuadraticBezierSegment.cpp(140): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\QuadraticBezierSegment.cpp(107): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\RectangleGeometry.cpp(262): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\GeometryGroup.cpp(385): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\StreamGeometry.cpp(252): NsMeta<Category>("Geometries");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\BitmapImage.cpp(269): NsMeta<Category>("Bitmaps");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\CroppedBitmap.cpp(219): NsMeta<Category>("Bitmaps");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ImageSource.cpp(58): NsMeta<Category>("Bitmaps");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\BlurEffect.cpp(94): NsMeta<Category>("Effects");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\DropShadowEffect.cpp(192): NsMeta<Category>("Effects");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\CompositeTransform.cpp(161): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\CompositeTransform3D.cpp(198): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\MatrixTransform.cpp(91): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\MatrixTransform3D.cpp(73): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\RotateTransform.cpp(107): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ScaleTransform.cpp(120): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\SkewTransform.cpp(120): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\TransformGroup.cpp(280): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\TranslateTransform.cpp(96): NsMeta<Category>("Transforms");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ControlTemplate.cpp(112): NsMeta<Category>("Controls");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\DataTemplate.cpp(97): NsMeta<Category>("Controls");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\HierarchicalDataTemplate.cpp(110): NsMeta<Category>("Controls");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\ItemsPanelTemplate.cpp(35): NsMeta<Category>("Controls");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\Style.cpp(429): NsMeta<Category>("Controls");
W:\Noesis\NoesisSDK\Native\Src\Packages\Gui\Core\Src\MultiBinding.cpp(221): NsMeta<Category>("MarkupExtension");
W:\Noesis\NoesisSDK\Native\Src\Packages\App\ApplicationLauncher\Src\LocExtension.cpp(156): NsMeta<Category>("MarkupExtension");
|