layout smartShapePropertiesView
    {
    constant:
        zWidthLabel        : '$$$/VectorLayerOptionsBar/Width/Label=W:';
        zWidthTooltip      : '$$$/VectorLayerOptionsBar/ToolTips/ShapeWidth=Set shape width';
        zHeightTooltip     : '$$$/VectorLayerOptionsBar/ToolTips/ShapeHeight=Set shape height';
        zHeightLabel       : '$$$/VectorLayerOptionsBar/Height/Label=H:';
        zLinkTooltip       : '$$$/VectorLayerOptionsBar/ToolTips/ShapeWidthHeightLinkTooltip=Link shape width and height';
        zXLabel            : '$$$/VectorLayerOptionsBar/X/Label=X:';
        zXTooltip          : '$$$/VectorLayerOptionsBar/X/ToolTip=Set horizontal location';
        zYLabel            : '$$$/VectorLayerOptionsBar/Y/Label=Y:';
        zYTooltip          : '$$$/VectorLayerOptionsBar/Y/ToolTip=Set vertical location';
        zShapeFillFlyout   : '$$$/VectorLayerOptionsBar/ToolTips/FillType=Set shape fill type';
        zShapeStrokeFlyout : '$$$/VectorLayerOptionsBar/ToolTips/StrokeType=Set shape stroke type';
        zEditSliderTooltip : '$$$/VectorLayerOptionsBar/ToolTips/StrokeWidth=Set shape stroke width';
        zEditSliderFormat  : '$$$/override/TPopupEditSlider/StrokeWidth/FormatString=100.0 px';
        zStrokeTypeFlyout  : '$$$/VectorLayerOptionsBar/ToolTips/StrokeType=Set shape stroke type';
        zAlignTooltip      : '$$$/Dialog/VectorLayerMoreOptions/ToolTips/LineAlign=Set align type for stroke';
        zCapTooltip        : '$$$/Dialog/VectorLayerMoreOptions/ToolTips/LineCaps=Set line cap type for stroke';
        zJoinTooltip       : '$$$/Dialog/VectorLayerMoreOptions/ToolTips/LineJoin=Set line join type for stroke';
        zUnionTooltip      : '$$$/SmartShapeProperties/ToolTips/IntersectionOperation/Union=Combine shapes';
        zSubtractTooltip   : '$$$/SmartShapeProperties/ToolTips/IntersectionOperation/Subtract=Subtract front shape';
        zIntersectTooltip  : '$$$/SmartShapeProperties/ToolTips/IntersectionOperation/Intersect=Intersect shape areas';
        zXORTooltip        : '$$$/SmartShapeProperties/ToolTips/IntersectionOperation/Exclude=Exclude overlapping shapes';
        zBoundingBoxSep    : '$$$/SmartShapeProperties/Separator/BoundingBox=Bounding Box';
        zStrokeDetailsSep  : '$$$/SmartShapeProperties/Separator/ShapeDetails=Shape Details';
        zIntersectionOpSep : '$$$/SmartShapeProperties/Separator/PathOperation=Path Operations';

        kContentWidth : gPropertiesPaletteWidth - gScrollerInset - gOptionsMarginWidth * 2;

    interface:
        discloseBoundingBox    : true;
        discloseStrokeDetails  : true;
        discloseIntersectionOp : true;

    view TSmartShapePropertiesView(identifier     : @smartShapePropertiesPanel,
                                   placement      : place_column,
                                   font           : staticSmallFont,
                                   margin         : gOptionsMarginWidth,
                                   noGrowVertical : true,
                                   spacing        : gGap,
                                   qDebugDraw     : false)
        {
        TDisclosureSeparator(name: zBoundingBoxSep, bind: @discloseBoundingBox);

        TOptional(bind: @discloseBoundingBox, width: kContentWidth)
            {
            row(horizontal     : align_fill,
                child_vertical : align_center,
                spacing        : gGap)
                {
                TUnitsFixedPoint(identifier : @smartShapeWidth,
                                 name       : zWidthLabel,
                                 horizontal : align_fill,
                                 width      : gFixedEditTextWidth,
                                 tooltip    : zWidthTooltip);

                TPunchButton(width        : gToolOptionsIconWidth,
                             height       : gToolOptionsIconHeight,
                             identifier   : @smartShapeBBoxLink,
                             tooltip      : zLinkTooltip,
                             iconRootName : 'CellLinkIndicator');

                TUnitsFixedPoint(identifier : @smartShapeHeight,
                                 name       : zHeightLabel,
                                 horizontal : align_fill,
                                 width      : gFixedEditTextWidth,
                                 tooltip    : zHeightTooltip);
                }

            row(horizontal     : align_fill,
                child_vertical : align_center,
                spacing        : gGap)
                {
                TUnitsFixedPoint(identifier : @smartShapeLeft,
                                 name       : zXLabel,
                                 horizontal : align_fill,
                                 width      : gFixedEditTextWidth,
                                 tooltip    : zXTooltip);

                TView(width: gToolOptionsIconWidth, height: gSpace);

                TUnitsFixedPoint(identifier : @smartShapeTop,
                                 name       : zYLabel,
                                 horizontal : align_fill,
                                 width      : gFixedEditTextWidth,
                                 tooltip    : zYTooltip);
                }
            }

        TDisclosureSeparator(name: zStrokeDetailsSep, bind: @discloseStrokeDetails);

        TOptional(bind: @discloseStrokeDetails, width: kContentWidth)
            {
            row(horizontal: align_fill, spacing: gGap)
                {
                TCustomDrawFlyoutControl(identifier : @smartShapeFillFlyout,
                                         tooltip    : zShapeFillFlyout,
                                         width      : 30,
                                         height     : 20,
                                         vertical   : align_fill);

                TCustomDrawFlyoutControl(identifier : @smartShapeStrokeFlyout,
                                         tooltip    : zShapeStrokeFlyout,
                                         width      : 30,
                                         vertical   : align_fill);

                TPopupEditSlider(identifier           : @smartShapeLineWeight,
                                 tooltip              : zEditSliderTooltip,
                                 editClassName        : 'TUnitsFixedPoint',
                                 editDisplayFormat    : zEditSliderFormat,
                                 editViewIdentifier   : @smartShapeLineWeightEdit,
                                 sliderViewIdentifier : @smartShapeLineWeightSlider,
                                 horizontal           : align_left,
                                 vertical             : align_center,
                                 width                : 50);

                TCustomDrawFlyoutControl(identifier : @smartShapeStrokeDetailsFlyout,
                                         tooltip    : zStrokeTypeFlyout,
                                         width      : 20,
                                         horizontal : align_fill,
                                         vertical   : align_fill);
                }

            row(spacing: gGap, horizontal: align_fill)
                {
                ZMenuPopup(resourceIdentifier : 4803,
                           width              : 61 + gGap,
                           tooltip            : zAlignTooltip,
                           identifier         : @smartShapeAlign);

                ZMenuPopup(resourceIdentifier : 4804,
                           width              : 67,
                           tooltip            : zCapTooltip,
                           identifier         : @smartShapeCap);

                ZMenuPopup(resourceIdentifier : 4805,
                           width              : 51,
                           horizontal         : align_fill,
                           tooltip            : zJoinTooltip,
                           identifier         : @smartShapeJoin);
                }
            }

        TDisclosureSeparator(name: zIntersectionOpSep, bind: @discloseIntersectionOp);

        TOptional(bind             : @discloseIntersectionOp,
                  width            : kContentWidth,
                  child_horizontal : align_center)
            {
            TRadioBar(identifier    : @smartShapeComponentOperation,

                      identifier1   : 'Unin',
                      iconRootName1 : 'MarqueeAdd',
                      tooltip1      : zUnionTooltip,

                      identifier2   : 'Subt',
                      iconRootName2 : 'MarqueeSubtract',
                      tooltip2      : zSubtractTooltip,

                      identifier3   : 'Intr',
                      iconRootName3 : 'MarqueeIntersect',
                      tooltip3      : zIntersectTooltip,

                      identifier4   : 'Exor',
                      iconRootName4 : 'MarqueeXOR',
                      tooltip4      : zXORTooltip);
            }
        }
    }
