mirror of
https://github.com/vczh-libraries/Release.git
synced 2026-06-01 23:06:39 +08:00
Update release
This commit is contained in:
+102
-53
@@ -3692,8 +3692,7 @@ text::CharMeasurer
|
||||
***********************************************************************/
|
||||
|
||||
CharMeasurer::CharMeasurer(vint _rowHeight)
|
||||
:oldRenderTarget(0)
|
||||
,rowHeight(_rowHeight)
|
||||
:rowHeight(_rowHeight)
|
||||
{
|
||||
memset(widths, 0, sizeof(widths));
|
||||
}
|
||||
@@ -3712,15 +3711,27 @@ text::CharMeasurer
|
||||
}
|
||||
}
|
||||
|
||||
vint CharMeasurer::MeasureWidth(wchar_t character)
|
||||
vint CharMeasurer::MeasureWidth(UnicodeCodePoint codePoint)
|
||||
{
|
||||
vint w=widths[character];
|
||||
if(w==0)
|
||||
vuint32_t index = codePoint.GetCodePoint();
|
||||
if (0 <= index && index < 65536)
|
||||
{
|
||||
widths[character]=w=MeasureWidthInternal(character, oldRenderTarget);
|
||||
vint w = widths[index];
|
||||
if (w == 0)
|
||||
{
|
||||
widths[index] = w = MeasureWidthInternal(codePoint, oldRenderTarget);
|
||||
}
|
||||
return w;
|
||||
}
|
||||
else if (index < 0x110000)
|
||||
{
|
||||
return MeasureWidthInternal(codePoint, oldRenderTarget);
|
||||
}
|
||||
else
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
vint CharMeasurer::GetRowHeight()
|
||||
{
|
||||
@@ -4014,7 +4025,7 @@ text::TextLines
|
||||
lines[i].availableOffsetCount = 0;
|
||||
}
|
||||
|
||||
tabWidth = tabSpaceCount * (charMeasurer ? charMeasurer->MeasureWidth(L' ') : 1);
|
||||
tabWidth = tabSpaceCount * (charMeasurer ? charMeasurer->MeasureWidth({ L' ' }) : 1);
|
||||
if (tabWidth == 0)
|
||||
{
|
||||
tabWidth = 1;
|
||||
@@ -4043,33 +4054,46 @@ text::TextLines
|
||||
|
||||
void TextLines::MeasureRow(vint row)
|
||||
{
|
||||
TextLine& line=lines[row];
|
||||
vint offset=0;
|
||||
if(line.availableOffsetCount)
|
||||
TextLine& line = lines[row];
|
||||
vint offset = 0;
|
||||
if (line.availableOffsetCount)
|
||||
{
|
||||
offset=line.att[line.availableOffsetCount-1].rightOffset;
|
||||
offset = line.att[line.availableOffsetCount - 1].rightOffset;
|
||||
}
|
||||
for(vint i=line.availableOffsetCount;i<line.dataLength;i++)
|
||||
for (vint i = line.availableOffsetCount; i < line.dataLength; i++)
|
||||
{
|
||||
CharAtt& att=line.att[i];
|
||||
wchar_t c=line.text[i];
|
||||
vint width=0;
|
||||
if(passwordChar)
|
||||
CharAtt& att = line.att[i];
|
||||
wchar_t c = line.text[i];
|
||||
vint width = 0;
|
||||
vint passwordWidth = 0;
|
||||
if (passwordChar)
|
||||
{
|
||||
width = charMeasurer ? charMeasurer->MeasureWidth(passwordChar) : 1;
|
||||
passwordWidth = charMeasurer ? charMeasurer->MeasureWidth({ passwordChar }) : 1;
|
||||
}
|
||||
else if(c==L'\t')
|
||||
|
||||
if (c == L'\t')
|
||||
{
|
||||
width=tabWidth-offset%tabWidth;
|
||||
width = tabWidth - offset % tabWidth;
|
||||
}
|
||||
#if defined VCZH_MSVC
|
||||
else if (UTF16SPFirst(c) && (i + 1 < line.dataLength) && UTF16SPSecond(line.text[i + 1]))
|
||||
{
|
||||
width = passwordChar ? passwordWidth : (charMeasurer ? charMeasurer->MeasureWidth({ c, line.text[i + 1] }) : 1);
|
||||
offset += width;
|
||||
att.rightOffset = (int)offset;
|
||||
line.att[i + 1].rightOffset = (int)offset;
|
||||
i++;
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
{
|
||||
width = charMeasurer ? charMeasurer->MeasureWidth(line.text[i]) : 1;
|
||||
width = passwordChar ? passwordWidth : (charMeasurer ? charMeasurer->MeasureWidth({ c }) : 1);
|
||||
}
|
||||
offset+=width;
|
||||
att.rightOffset=(int)offset;
|
||||
offset += width;
|
||||
att.rightOffset = (int)offset;
|
||||
}
|
||||
line.availableOffsetCount=line.dataLength;
|
||||
line.availableOffsetCount = line.dataLength;
|
||||
}
|
||||
|
||||
vint TextLines::GetRowWidth(vint row)
|
||||
@@ -4151,6 +4175,12 @@ text::TextLines
|
||||
p1=p;
|
||||
}
|
||||
}
|
||||
#if defined VCZH_MSVC
|
||||
if (UTF16SPSecond(line.text[i1]) && i1 > 0 && UTF16SPFirst(line.text[i1 - 1]))
|
||||
{
|
||||
i1--;
|
||||
}
|
||||
#endif
|
||||
return TextPos(row, i1);
|
||||
}
|
||||
|
||||
@@ -4397,6 +4427,7 @@ GuiColorizedTextElement
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************************
|
||||
.\NATIVEWINDOW\GUINATIVEWINDOW.CPP
|
||||
***********************************************************************/
|
||||
@@ -24263,65 +24294,83 @@ GuiTextBoxCommonInterface
|
||||
|
||||
void GuiTextBoxCommonInterface::Move(TextPos pos, bool shift)
|
||||
{
|
||||
TextPos oldBegin=textElement->GetCaretBegin();
|
||||
TextPos oldEnd=textElement->GetCaretEnd();
|
||||
TextPos oldBegin = textElement->GetCaretBegin();
|
||||
TextPos oldEnd = textElement->GetCaretEnd();
|
||||
|
||||
pos=textElement->GetLines().Normalize(pos);
|
||||
if(!shift)
|
||||
#if defined VCZH_MSVC
|
||||
if (0 <= pos.row && pos.row < textElement->GetLines().GetCount())
|
||||
{
|
||||
TextLine& line = textElement->GetLines().GetLine(pos.row);
|
||||
if (pos.column > 0 && UTF16SPFirst(line.text[pos.column - 1]) && UTF16SPSecond(line.text[pos.column]))
|
||||
{
|
||||
if (pos < oldBegin)
|
||||
{
|
||||
pos.column--;
|
||||
}
|
||||
else if (pos > oldBegin)
|
||||
{
|
||||
pos.column++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
pos = textElement->GetLines().Normalize(pos);
|
||||
if (!shift)
|
||||
{
|
||||
textElement->SetCaretBegin(pos);
|
||||
}
|
||||
textElement->SetCaretEnd(pos);
|
||||
if(textControl)
|
||||
if (textControl)
|
||||
{
|
||||
GuiGraphicsHost* host=textComposition->GetRelatedGraphicsHost();
|
||||
if(host)
|
||||
GuiGraphicsHost* host = textComposition->GetRelatedGraphicsHost();
|
||||
if (host)
|
||||
{
|
||||
if(host->GetFocusedComposition()==textControl->GetFocusableComposition())
|
||||
if (host->GetFocusedComposition() == textControl->GetFocusableComposition())
|
||||
{
|
||||
textElement->SetCaretVisible(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Rect bounds=textElement->GetLines().GetRectFromTextPos(pos);
|
||||
Rect view=Rect(textElement->GetViewPosition(), textComposition->GetBounds().GetSize());
|
||||
Point viewPoint=view.LeftTop();
|
||||
Rect bounds = textElement->GetLines().GetRectFromTextPos(pos);
|
||||
Rect view = Rect(textElement->GetViewPosition(), textComposition->GetBounds().GetSize());
|
||||
Point viewPoint = view.LeftTop();
|
||||
|
||||
if(view.x2>view.x1 && view.y2>view.y1)
|
||||
if (view.x2 > view.x1 && view.y2 > view.y1)
|
||||
{
|
||||
if(bounds.x1<view.x1)
|
||||
if (bounds.x1 < view.x1)
|
||||
{
|
||||
viewPoint.x=bounds.x1;
|
||||
viewPoint.x = bounds.x1;
|
||||
}
|
||||
else if(bounds.x2>view.x2)
|
||||
else if (bounds.x2 > view.x2)
|
||||
{
|
||||
viewPoint.x=bounds.x2-view.Width();
|
||||
viewPoint.x = bounds.x2 - view.Width();
|
||||
}
|
||||
if(bounds.y1<view.y1)
|
||||
if (bounds.y1 < view.y1)
|
||||
{
|
||||
viewPoint.y=bounds.y1;
|
||||
viewPoint.y = bounds.y1;
|
||||
}
|
||||
else if(bounds.y2>view.y2)
|
||||
else if (bounds.y2 > view.y2)
|
||||
{
|
||||
viewPoint.y=bounds.y2-view.Height();
|
||||
viewPoint.y = bounds.y2 - view.Height();
|
||||
}
|
||||
}
|
||||
|
||||
callback->ScrollToView(viewPoint);
|
||||
UpdateCaretPoint();
|
||||
|
||||
TextPos newBegin=textElement->GetCaretBegin();
|
||||
TextPos newEnd=textElement->GetCaretEnd();
|
||||
if(oldBegin!=newBegin || oldEnd!=newEnd)
|
||||
TextPos newBegin = textElement->GetCaretBegin();
|
||||
TextPos newEnd = textElement->GetCaretEnd();
|
||||
if (oldBegin != newBegin || oldEnd != newEnd)
|
||||
{
|
||||
ICommonTextEditCallback::TextCaretChangedStruct arguments;
|
||||
arguments.oldBegin=oldBegin;
|
||||
arguments.oldEnd=oldEnd;
|
||||
arguments.newBegin=newBegin;
|
||||
arguments.newEnd=newEnd;
|
||||
arguments.editVersion=editVersion;
|
||||
for(vint i=0;i<textEditCallbacks.Count();i++)
|
||||
arguments.oldBegin = oldBegin;
|
||||
arguments.oldEnd = oldEnd;
|
||||
arguments.newBegin = newBegin;
|
||||
arguments.newEnd = newEnd;
|
||||
arguments.editVersion = editVersion;
|
||||
for (vint i = 0; i < textEditCallbacks.Count(); i++)
|
||||
{
|
||||
textEditCallbacks[i]->TextCaretChanged(arguments);
|
||||
}
|
||||
@@ -35337,7 +35386,7 @@ IGuiInstanceResourceManager
|
||||
return instanceResources.Values()[index];
|
||||
}
|
||||
|
||||
void UnloadResource(const WString& name)
|
||||
void UnloadResource(const WString& name)override
|
||||
{
|
||||
vint index = resources.Keys().IndexOf(name);
|
||||
if (index != -1)
|
||||
|
||||
+56
-7
@@ -1385,7 +1385,8 @@ Image Object
|
||||
/// <summary>
|
||||
/// Save the image to a stream.
|
||||
/// </summary>
|
||||
/// <param name="stream">The stream</param>
|
||||
/// <param name="stream">The stream.</param>
|
||||
/// <param name="formatType">The format of the image.</param>
|
||||
virtual void SaveToStream(stream::IStream& stream, FormatType formatType = FormatType::Unknown) = 0;
|
||||
};
|
||||
|
||||
@@ -6100,13 +6101,62 @@ Colorized Plain Text (model)
|
||||
void AppendAndFinalize(TextLine& line);
|
||||
};
|
||||
|
||||
#if defined VCZH_MSVC
|
||||
/// <summary>Test if a wchar_t is the first character of a surrogate pair.</summary>
|
||||
inline bool UTF16SPFirst(wchar_t c)
|
||||
{
|
||||
return 0xD800 <= c && c < 0xDC00;
|
||||
}
|
||||
|
||||
/// <summary>Test if a wchar_t is the second character of a surrogate pair.</summary>
|
||||
inline bool UTF16SPSecond(wchar_t c)
|
||||
{
|
||||
return 0xDC00 <= c && c < 0xDFFF;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// A unicode code point.
|
||||
/// In Windows, when the first character is not the leading character of a surrogate pair, the second character is ignored.
|
||||
/// In other platforms which treat wchar_t as a UTF-32 character, the second character is ignored.
|
||||
/// </summary>
|
||||
struct UnicodeCodePoint
|
||||
{
|
||||
#if defined VCZH_MSVC
|
||||
wchar_t characters[2];
|
||||
|
||||
UnicodeCodePoint(wchar_t c) :characters{ c,0 } {}
|
||||
UnicodeCodePoint(wchar_t c1, wchar_t c2) :characters{ c1,c2 } {}
|
||||
#elif defined VCZH_GCC
|
||||
wchar_t character;
|
||||
|
||||
UnicodeCodePoint(wchar_t c) :character(c) {}
|
||||
#endif
|
||||
|
||||
vuint32_t GetCodePoint()const
|
||||
{
|
||||
#if defined VCZH_MSVC
|
||||
if (UTF16SPFirst(characters[0]) && UTF16SPSecond(characters[1]))
|
||||
{
|
||||
return (wchar_t)(characters[0] - 0xD800) * 0x400 + (wchar_t)(characters[1] - 0xDC00) + 0x10000;
|
||||
}
|
||||
else
|
||||
{
|
||||
return (vuint32_t)characters[0];
|
||||
}
|
||||
#elif defined VCZH_GCC
|
||||
return (vuint32_t)character;
|
||||
#endif
|
||||
}
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// An abstract class for character size measuring in differect rendering technology.
|
||||
/// </summary>
|
||||
class CharMeasurer : public virtual IDescriptable
|
||||
{
|
||||
protected:
|
||||
IGuiGraphicsRenderTarget* oldRenderTarget;
|
||||
IGuiGraphicsRenderTarget* oldRenderTarget = nullptr;
|
||||
vint rowHeight;
|
||||
vint widths[65536];
|
||||
|
||||
@@ -6114,9 +6164,9 @@ Colorized Plain Text (model)
|
||||
/// Measure the width of a character.
|
||||
/// </summary>
|
||||
/// <returns>The width in pixel.</returns>
|
||||
/// <param name="character">The character to measure. This is a pure virtual member function to be overrided.</param>
|
||||
/// <param name="codePoint">The unicode code point to measure.</param>
|
||||
/// <param name="renderTarget">The render target which the character is going to be rendered. This is a pure virtual member function to be overrided.</param>
|
||||
virtual vint MeasureWidthInternal(wchar_t character, IGuiGraphicsRenderTarget* renderTarget)=0;
|
||||
virtual vint MeasureWidthInternal(UnicodeCodePoint codePoint, IGuiGraphicsRenderTarget* renderTarget)=0;
|
||||
/// <summary>
|
||||
/// Measure the height of a character.
|
||||
/// </summary>
|
||||
@@ -6141,8 +6191,8 @@ Colorized Plain Text (model)
|
||||
/// Measure the width of a character using the binded render target.
|
||||
/// </summary>
|
||||
/// <returns>The width of a character, in pixel.</returns>
|
||||
/// <param name="character">The character to measure.</param>
|
||||
vint MeasureWidth(wchar_t character);
|
||||
/// <param name="codePoint">The unicode code point to measure.</param>
|
||||
vint MeasureWidth(UnicodeCodePoint codePoint);
|
||||
/// <summary>
|
||||
/// Measure the height of a character.
|
||||
/// </summary>
|
||||
@@ -9332,7 +9382,6 @@ namespace vl
|
||||
extern void FinalizeTheme();
|
||||
/// <summary>Register a control template collection object.</summary>
|
||||
/// <returns>Returns true if this operation succeeded.</returns>
|
||||
/// <param name="name">The name of the theme.</param>
|
||||
/// <param name="theme">The control template collection object.</param>
|
||||
extern bool RegisterTheme(Ptr<ThemeTemplates> theme);
|
||||
/// <summary>Unregister a control template collection object.</summary>
|
||||
|
||||
@@ -6930,7 +6930,7 @@ GuiDefaultInstanceLoader
|
||||
GetInstanceConstructor(typeInfo.typeInfo->GetTypeDescriptor()) != nullptr;
|
||||
}
|
||||
|
||||
Ptr<workflow::WfBaseConstructorCall> CreateRootInstance(GuiResourcePrecompileContext& precompileContext, types::ResolvingResult& resolvingResult, const TypeInfo& typeInfo, ArgumentMap& arguments, GuiResourceError::List& errors)
|
||||
Ptr<workflow::WfBaseConstructorCall> CreateRootInstance(GuiResourcePrecompileContext& precompileContext, types::ResolvingResult& resolvingResult, const TypeInfo& typeInfo, ArgumentMap& arguments, GuiResourceError::List& errors)override
|
||||
{
|
||||
CTOR_PARAM_PREFIX
|
||||
|
||||
|
||||
+147
-128
@@ -2440,17 +2440,18 @@ GuiColorizedTextElementRenderer
|
||||
|
||||
void GuiColorizedTextElementRenderer::FontChanged()
|
||||
{
|
||||
IWindowsDirect2DResourceManager* resourceManager=GetWindowsDirect2DResourceManager();
|
||||
if(textFormat)
|
||||
IWindowsDirect2DResourceManager* resourceManager = GetWindowsDirect2DResourceManager();
|
||||
if (textFormat)
|
||||
{
|
||||
element->GetLines().SetCharMeasurer(nullptr);
|
||||
resourceManager->DestroyDirect2DTextFormat(oldFont);
|
||||
resourceManager->DestroyDirect2DCharMeasurer(oldFont);
|
||||
}
|
||||
oldFont=element->GetFont();
|
||||
oldFont = element->GetFont();
|
||||
if (oldFont.fontFamily == L"") oldFont.fontFamily = GetCurrentController()->ResourceService()->GetDefaultFont().fontFamily;
|
||||
if (oldFont.size == 0) oldFont.size = 12;
|
||||
|
||||
textFormat=resourceManager->CreateDirect2DTextFormat(oldFont);
|
||||
textFormat = resourceManager->CreateDirect2DTextFormat(oldFont);
|
||||
element->GetLines().SetCharMeasurer(resourceManager->CreateDirect2DCharMeasurer(oldFont).Obj());
|
||||
}
|
||||
|
||||
@@ -2490,97 +2491,104 @@ GuiColorizedTextElementRenderer
|
||||
|
||||
void GuiColorizedTextElementRenderer::Render(Rect bounds)
|
||||
{
|
||||
if(renderTarget)
|
||||
if (renderTarget)
|
||||
{
|
||||
ID2D1RenderTarget* d2dRenderTarget=renderTarget->GetDirect2DRenderTarget();
|
||||
wchar_t passwordChar=element->GetPasswordChar();
|
||||
Point viewPosition=element->GetViewPosition();
|
||||
ID2D1RenderTarget* d2dRenderTarget = renderTarget->GetDirect2DRenderTarget();
|
||||
wchar_t passwordChar = element->GetPasswordChar();
|
||||
Point viewPosition = element->GetViewPosition();
|
||||
Rect viewBounds(viewPosition, bounds.GetSize());
|
||||
vint startRow=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, viewBounds.y1)).row;
|
||||
vint endRow=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, viewBounds.y2)).row;
|
||||
TextPos selectionBegin=element->GetCaretBegin()<element->GetCaretEnd()?element->GetCaretBegin():element->GetCaretEnd();
|
||||
TextPos selectionEnd=element->GetCaretBegin()>element->GetCaretEnd()?element->GetCaretBegin():element->GetCaretEnd();
|
||||
bool focused=element->GetFocused();
|
||||
vint startRow = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, viewBounds.y1)).row;
|
||||
vint endRow = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, viewBounds.y2)).row;
|
||||
TextPos selectionBegin = element->GetCaretBegin() < element->GetCaretEnd() ? element->GetCaretBegin() : element->GetCaretEnd();
|
||||
TextPos selectionEnd = element->GetCaretBegin() > element->GetCaretEnd() ? element->GetCaretBegin() : element->GetCaretEnd();
|
||||
bool focused = element->GetFocused();
|
||||
|
||||
renderTarget->SetTextAntialias(oldFont.antialias, oldFont.verticalAntialias);
|
||||
|
||||
for(vint row=startRow;row<=endRow;row++)
|
||||
for (vint row = startRow; row <= endRow; row++)
|
||||
{
|
||||
Rect startRect=element->GetLines().GetRectFromTextPos(TextPos(row, 0));
|
||||
Point startPoint=startRect.LeftTop();
|
||||
vint startColumn=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, startPoint.y)).column;
|
||||
vint endColumn=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, startPoint.y)).column;
|
||||
text::TextLine& line=element->GetLines().GetLine(row);
|
||||
Rect startRect = element->GetLines().GetRectFromTextPos(TextPos(row, 0));
|
||||
Point startPoint = startRect.LeftTop();
|
||||
vint startColumn = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, startPoint.y)).column;
|
||||
vint endColumn = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, startPoint.y)).column;
|
||||
|
||||
vint x=startColumn==0?0:line.att[startColumn-1].rightOffset;
|
||||
for(vint column=startColumn; column<=endColumn; column++)
|
||||
text::TextLine& line = element->GetLines().GetLine(row);
|
||||
if (endColumn + 1 < line.dataLength && text::UTF16SPFirst(line.text[endColumn]) && text::UTF16SPSecond(line.text[startColumn + 1]))
|
||||
{
|
||||
bool inSelection=false;
|
||||
if(selectionBegin.row==selectionEnd.row)
|
||||
{
|
||||
inSelection=(row==selectionBegin.row && selectionBegin.column<=column && column<selectionEnd.column);
|
||||
endColumn++;
|
||||
}
|
||||
else if(row==selectionBegin.row)
|
||||
|
||||
vint x = startColumn == 0 ? 0 : line.att[startColumn - 1].rightOffset;
|
||||
for (vint column = startColumn; column <= endColumn; column++)
|
||||
{
|
||||
inSelection=selectionBegin.column<=column;
|
||||
bool inSelection = false;
|
||||
if (selectionBegin.row == selectionEnd.row)
|
||||
{
|
||||
inSelection = (row == selectionBegin.row && selectionBegin.column <= column && column < selectionEnd.column);
|
||||
}
|
||||
else if(row==selectionEnd.row)
|
||||
else if (row == selectionBegin.row)
|
||||
{
|
||||
inSelection=column<selectionEnd.column;
|
||||
inSelection = selectionBegin.column <= column;
|
||||
}
|
||||
else if (row == selectionEnd.row)
|
||||
{
|
||||
inSelection = column < selectionEnd.column;
|
||||
}
|
||||
else
|
||||
{
|
||||
inSelection=selectionBegin.row<row && row<selectionEnd.row;
|
||||
inSelection = selectionBegin.row < row && row < selectionEnd.row;
|
||||
}
|
||||
|
||||
bool crlf=column==line.dataLength;
|
||||
vint colorIndex=crlf?0:line.att[column].colorIndex;
|
||||
if(colorIndex>=colors.Count())
|
||||
bool crlf = column == line.dataLength;
|
||||
vint colorIndex = crlf ? 0 : line.att[column].colorIndex;
|
||||
if (colorIndex >= colors.Count())
|
||||
{
|
||||
colorIndex=0;
|
||||
colorIndex = 0;
|
||||
}
|
||||
ColorItemResource& color=
|
||||
!inSelection?colors[colorIndex].normal:
|
||||
focused?colors[colorIndex].selectedFocused:
|
||||
ColorItemResource& color =
|
||||
!inSelection ? colors[colorIndex].normal :
|
||||
focused ? colors[colorIndex].selectedFocused :
|
||||
colors[colorIndex].selectedUnfocused;
|
||||
vint x2=crlf?x+startRect.Height()/2:line.att[column].rightOffset;
|
||||
vint tx=x-viewPosition.x+bounds.x1;
|
||||
vint ty=startPoint.y-viewPosition.y+bounds.y1;
|
||||
vint x2 = crlf ? x + startRect.Height() / 2 : line.att[column].rightOffset;
|
||||
vint tx = x - viewPosition.x + bounds.x1;
|
||||
vint ty = startPoint.y - viewPosition.y + bounds.y1;
|
||||
|
||||
if(color.background.a>0)
|
||||
if (color.background.a > 0)
|
||||
{
|
||||
d2dRenderTarget->FillRectangle(D2D1::RectF((FLOAT)tx, (FLOAT)ty, (FLOAT)(tx+(x2-x)), (FLOAT)(ty+startRect.Height())), color.backgroundBrush);
|
||||
d2dRenderTarget->FillRectangle(D2D1::RectF((FLOAT)tx, (FLOAT)ty, (FLOAT)(tx + (x2 - x)), (FLOAT)(ty + startRect.Height())), color.backgroundBrush);
|
||||
}
|
||||
if(!crlf)
|
||||
if (!crlf)
|
||||
{
|
||||
UINT32 count = text::UTF16SPFirst(line.text[column]) && column + 1 < line.dataLength && text::UTF16SPSecond(line.text[column + 1]) ? 2 : 1;
|
||||
d2dRenderTarget->DrawText(
|
||||
(passwordChar?&passwordChar:&line.text[column]),
|
||||
1,
|
||||
(passwordChar ? &passwordChar : &line.text[column]),
|
||||
count,
|
||||
textFormat->textFormat.Obj(),
|
||||
D2D1::RectF((FLOAT)tx, (FLOAT)ty, (FLOAT)tx+1, (FLOAT)ty+1),
|
||||
D2D1::RectF((FLOAT)tx, (FLOAT)ty, (FLOAT)tx + 1, (FLOAT)ty + 1),
|
||||
color.textBrush,
|
||||
D2D1_DRAW_TEXT_OPTIONS_NO_SNAP,
|
||||
DWRITE_MEASURING_MODE_GDI_NATURAL
|
||||
);
|
||||
if (count == 2) column++;
|
||||
}
|
||||
x=x2;
|
||||
x = x2;
|
||||
}
|
||||
}
|
||||
|
||||
if(element->GetCaretVisible() && element->GetLines().IsAvailable(element->GetCaretEnd()))
|
||||
if (element->GetCaretVisible() && element->GetLines().IsAvailable(element->GetCaretEnd()))
|
||||
{
|
||||
Point caretPoint=element->GetLines().GetPointFromTextPos(element->GetCaretEnd());
|
||||
vint height=element->GetLines().GetRowHeight();
|
||||
Point p1(caretPoint.x-viewPosition.x+bounds.x1, caretPoint.y-viewPosition.y+bounds.y1+1);
|
||||
Point p2(caretPoint.x-viewPosition.x+bounds.x1, caretPoint.y+height-viewPosition.y+bounds.y1-1);
|
||||
Point caretPoint = element->GetLines().GetPointFromTextPos(element->GetCaretEnd());
|
||||
vint height = element->GetLines().GetRowHeight();
|
||||
Point p1(caretPoint.x - viewPosition.x + bounds.x1, caretPoint.y - viewPosition.y + bounds.y1 + 1);
|
||||
Point p2(caretPoint.x - viewPosition.x + bounds.x1, caretPoint.y + height - viewPosition.y + bounds.y1 - 1);
|
||||
d2dRenderTarget->DrawLine(
|
||||
D2D1::Point2F((FLOAT)p1.x+0.5f, (FLOAT)p1.y),
|
||||
D2D1::Point2F((FLOAT)p2.x+0.5f, (FLOAT)p2.y),
|
||||
D2D1::Point2F((FLOAT)p1.x + 0.5f, (FLOAT)p1.y),
|
||||
D2D1::Point2F((FLOAT)p2.x + 0.5f, (FLOAT)p2.y),
|
||||
caretBrush
|
||||
);
|
||||
d2dRenderTarget->DrawLine(
|
||||
D2D1::Point2F((FLOAT)p1.x-0.5f, (FLOAT)p1.y),
|
||||
D2D1::Point2F((FLOAT)p2.x-0.5f, (FLOAT)p2.y),
|
||||
D2D1::Point2F((FLOAT)p1.x - 0.5f, (FLOAT)p1.y),
|
||||
D2D1::Point2F((FLOAT)p2.x - 0.5f, (FLOAT)p2.y),
|
||||
caretBrush
|
||||
);
|
||||
}
|
||||
@@ -3493,13 +3501,15 @@ CachedResourceAllocator
|
||||
ComPtr<IDWriteTextFormat> font;
|
||||
vint size;
|
||||
|
||||
Size MeasureInternal(wchar_t character, IGuiGraphicsRenderTarget* renderTarget)
|
||||
Size MeasureInternal(text::UnicodeCodePoint codePoint, IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
Size charSize(0, 0);
|
||||
IDWriteTextLayout* textLayout = 0;
|
||||
|
||||
UINT32 count = text::UTF16SPFirst(codePoint.characters[0]) && text::UTF16SPSecond(codePoint.characters[1]) ? 2 : 1;
|
||||
HRESULT hr = GetWindowsDirect2DObjectProvider()->GetDirectWriteFactory()->CreateTextLayout(
|
||||
&character,
|
||||
1,
|
||||
codePoint.characters,
|
||||
count,
|
||||
font.Obj(),
|
||||
0,
|
||||
0,
|
||||
@@ -3516,14 +3526,14 @@ CachedResourceAllocator
|
||||
return charSize;
|
||||
}
|
||||
|
||||
vint MeasureWidthInternal(wchar_t character, IGuiGraphicsRenderTarget* renderTarget)
|
||||
vint MeasureWidthInternal(text::UnicodeCodePoint codePoint, IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
return MeasureInternal(character, renderTarget).x;
|
||||
return MeasureInternal(codePoint, renderTarget).x;
|
||||
}
|
||||
|
||||
vint GetRowHeightInternal(IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
return MeasureInternal(L' ', renderTarget).y;
|
||||
return MeasureInternal({ L' ' }, renderTarget).y;
|
||||
}
|
||||
public:
|
||||
Direct2DCharMeasurer(ComPtr<IDWriteTextFormat> _font, vint _size)
|
||||
@@ -10275,16 +10285,16 @@ GuiColorizedTextElementRenderer
|
||||
|
||||
void GuiColorizedTextElementRenderer::FontChanged()
|
||||
{
|
||||
IWindowsGDIResourceManager* resourceManager=GetWindowsGDIResourceManager();
|
||||
if(font)
|
||||
IWindowsGDIResourceManager* resourceManager = GetWindowsGDIResourceManager();
|
||||
if (font)
|
||||
{
|
||||
element->GetLines().SetCharMeasurer(0);
|
||||
element->GetLines().SetCharMeasurer(nullptr);
|
||||
resourceManager->DestroyGdiFont(oldFont);
|
||||
resourceManager->DestroyCharMeasurer(oldFont);
|
||||
font=0;
|
||||
font = nullptr;
|
||||
}
|
||||
oldFont=element->GetFont();
|
||||
font=resourceManager->CreateGdiFont(oldFont);
|
||||
oldFont = element->GetFont();
|
||||
font = resourceManager->CreateGdiFont(oldFont);
|
||||
element->GetLines().SetCharMeasurer(resourceManager->CreateCharMeasurer(oldFont).Obj());
|
||||
}
|
||||
|
||||
@@ -10315,94 +10325,101 @@ GuiColorizedTextElementRenderer
|
||||
|
||||
void GuiColorizedTextElementRenderer::Render(Rect bounds)
|
||||
{
|
||||
if(renderTarget)
|
||||
if (renderTarget)
|
||||
{
|
||||
WinDC* dc=renderTarget->GetDC();
|
||||
WinDC* dc = renderTarget->GetDC();
|
||||
dc->SetFont(font);
|
||||
|
||||
wchar_t passwordChar=element->GetPasswordChar();
|
||||
Point viewPosition=element->GetViewPosition();
|
||||
wchar_t passwordChar = element->GetPasswordChar();
|
||||
Point viewPosition = element->GetViewPosition();
|
||||
Rect viewBounds(viewPosition, bounds.GetSize());
|
||||
vint startRow=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, viewBounds.y1)).row;
|
||||
vint endRow=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, viewBounds.y2)).row;
|
||||
TextPos selectionBegin=element->GetCaretBegin()<element->GetCaretEnd()?element->GetCaretBegin():element->GetCaretEnd();
|
||||
TextPos selectionEnd=element->GetCaretBegin()>element->GetCaretEnd()?element->GetCaretBegin():element->GetCaretEnd();
|
||||
bool focused=element->GetFocused();
|
||||
Ptr<windows::WinBrush> lastBrush=0;
|
||||
vint startRow = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, viewBounds.y1)).row;
|
||||
vint endRow = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, viewBounds.y2)).row;
|
||||
TextPos selectionBegin = element->GetCaretBegin() < element->GetCaretEnd() ? element->GetCaretBegin() : element->GetCaretEnd();
|
||||
TextPos selectionEnd = element->GetCaretBegin() > element->GetCaretEnd() ? element->GetCaretBegin() : element->GetCaretEnd();
|
||||
bool focused = element->GetFocused();
|
||||
Ptr<windows::WinBrush> lastBrush = 0;
|
||||
|
||||
for(vint row=startRow;row<=endRow;row++)
|
||||
for (vint row = startRow; row <= endRow; row++)
|
||||
{
|
||||
Rect startRect=element->GetLines().GetRectFromTextPos(TextPos(row, 0));
|
||||
Point startPoint=startRect.LeftTop();
|
||||
vint startColumn=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, startPoint.y)).column;
|
||||
vint endColumn=element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, startPoint.y)).column;
|
||||
text::TextLine& line=element->GetLines().GetLine(row);
|
||||
Rect startRect = element->GetLines().GetRectFromTextPos(TextPos(row, 0));
|
||||
Point startPoint = startRect.LeftTop();
|
||||
vint startColumn = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x1, startPoint.y)).column;
|
||||
vint endColumn = element->GetLines().GetTextPosFromPoint(Point(viewBounds.x2, startPoint.y)).column;
|
||||
|
||||
vint x=startColumn==0?0:line.att[startColumn-1].rightOffset;
|
||||
for(vint column=startColumn; column<=endColumn; column++)
|
||||
text::TextLine& line = element->GetLines().GetLine(row);
|
||||
if (text::UTF16SPFirst(line.text[endColumn]) && endColumn + 1 < line.dataLength && text::UTF16SPSecond(line.text[startColumn + 1]))
|
||||
{
|
||||
bool inSelection=false;
|
||||
if(selectionBegin.row==selectionEnd.row)
|
||||
{
|
||||
inSelection=(row==selectionBegin.row && selectionBegin.column<=column && column<selectionEnd.column);
|
||||
endColumn++;
|
||||
}
|
||||
else if(row==selectionBegin.row)
|
||||
|
||||
vint x = startColumn == 0 ? 0 : line.att[startColumn - 1].rightOffset;
|
||||
for (vint column = startColumn; column <= endColumn; column++)
|
||||
{
|
||||
inSelection=selectionBegin.column<=column;
|
||||
bool inSelection = false;
|
||||
if (selectionBegin.row == selectionEnd.row)
|
||||
{
|
||||
inSelection = (row == selectionBegin.row && selectionBegin.column <= column && column < selectionEnd.column);
|
||||
}
|
||||
else if(row==selectionEnd.row)
|
||||
else if (row == selectionBegin.row)
|
||||
{
|
||||
inSelection=column<selectionEnd.column;
|
||||
inSelection = selectionBegin.column <= column;
|
||||
}
|
||||
else if (row == selectionEnd.row)
|
||||
{
|
||||
inSelection = column < selectionEnd.column;
|
||||
}
|
||||
else
|
||||
{
|
||||
inSelection=selectionBegin.row<row && row<selectionEnd.row;
|
||||
inSelection = selectionBegin.row < row && row < selectionEnd.row;
|
||||
}
|
||||
|
||||
bool crlf=column==line.dataLength;
|
||||
vint colorIndex=crlf?0:line.att[column].colorIndex;
|
||||
if(colorIndex>=colors.Count())
|
||||
bool crlf = column == line.dataLength;
|
||||
vint colorIndex = crlf ? 0 : line.att[column].colorIndex;
|
||||
if (colorIndex >= colors.Count())
|
||||
{
|
||||
colorIndex=0;
|
||||
colorIndex = 0;
|
||||
}
|
||||
ColorItemResource& color=
|
||||
!inSelection?colors[colorIndex].normal:
|
||||
focused?colors[colorIndex].selectedFocused:
|
||||
ColorItemResource& color =
|
||||
!inSelection ? colors[colorIndex].normal :
|
||||
focused ? colors[colorIndex].selectedFocused :
|
||||
colors[colorIndex].selectedUnfocused;
|
||||
vint x2=crlf?x+startRect.Height()/2:line.att[column].rightOffset;
|
||||
vint tx=x-viewPosition.x+bounds.x1;
|
||||
vint ty=startPoint.y-viewPosition.y+bounds.y1;
|
||||
vint x2 = crlf ? x + startRect.Height() / 2 : line.att[column].rightOffset;
|
||||
vint tx = x - viewPosition.x + bounds.x1;
|
||||
vint ty = startPoint.y - viewPosition.y + bounds.y1;
|
||||
|
||||
if(color.background.a)
|
||||
if (color.background.a)
|
||||
{
|
||||
if(lastBrush!=color.backgroundBrush)
|
||||
if (lastBrush != color.backgroundBrush)
|
||||
{
|
||||
lastBrush=color.backgroundBrush;
|
||||
lastBrush = color.backgroundBrush;
|
||||
dc->SetBrush(lastBrush);
|
||||
}
|
||||
dc->FillRect(tx, ty, tx+(x2-x), ty+startRect.Height());
|
||||
dc->FillRect(tx, ty, tx + (x2 - x), ty + startRect.Height());
|
||||
}
|
||||
if(!crlf)
|
||||
if (!crlf)
|
||||
{
|
||||
if(color.text.a)
|
||||
vint count = text::UTF16SPFirst(line.text[column]) && column + 1 < line.dataLength && text::UTF16SPSecond(line.text[column + 1]) ? 2 : 1;
|
||||
if (color.text.a)
|
||||
{
|
||||
dc->SetTextColor(RGB(color.text.r, color.text.g, color.text.b));
|
||||
dc->DrawBuffer(tx, ty, (passwordChar?&passwordChar:&line.text[column]), 1);
|
||||
dc->DrawBuffer(tx, ty, (passwordChar ? &passwordChar : &line.text[column]), count);
|
||||
}
|
||||
if (count == 2) column++;
|
||||
}
|
||||
x=x2;
|
||||
x = x2;
|
||||
}
|
||||
}
|
||||
|
||||
if(element->GetCaretVisible() && element->GetLines().IsAvailable(element->GetCaretEnd()))
|
||||
if (element->GetCaretVisible() && element->GetLines().IsAvailable(element->GetCaretEnd()))
|
||||
{
|
||||
Point caretPoint=element->GetLines().GetPointFromTextPos(element->GetCaretEnd());
|
||||
vint height=element->GetLines().GetRowHeight();
|
||||
Point caretPoint = element->GetLines().GetPointFromTextPos(element->GetCaretEnd());
|
||||
vint height = element->GetLines().GetRowHeight();
|
||||
dc->SetPen(caretPen);
|
||||
dc->MoveTo(caretPoint.x-viewPosition.x+bounds.x1, caretPoint.y-viewPosition.y+bounds.y1+1);
|
||||
dc->LineTo(caretPoint.x-viewPosition.x+bounds.x1, caretPoint.y+height-viewPosition.y+bounds.y1-1);
|
||||
dc->MoveTo(caretPoint.x-1-viewPosition.x+bounds.x1, caretPoint.y-viewPosition.y+bounds.y1+1);
|
||||
dc->LineTo(caretPoint.x-1-viewPosition.x+bounds.x1, caretPoint.y+height-viewPosition.y+bounds.y1-1);
|
||||
dc->MoveTo(caretPoint.x - viewPosition.x + bounds.x1, caretPoint.y - viewPosition.y + bounds.y1 + 1);
|
||||
dc->LineTo(caretPoint.x - viewPosition.x + bounds.x1, caretPoint.y + height - viewPosition.y + bounds.y1 - 1);
|
||||
dc->MoveTo(caretPoint.x - 1 - viewPosition.x + bounds.x1, caretPoint.y - viewPosition.y + bounds.y1 + 1);
|
||||
dc->LineTo(caretPoint.x - 1 - viewPosition.x + bounds.x1, caretPoint.y + height - viewPosition.y + bounds.y1 - 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10655,14 +10672,16 @@ CachedResourceAllocator
|
||||
Ptr<WinFont> font;
|
||||
vint size;
|
||||
|
||||
Size MeasureInternal(wchar_t character, IGuiGraphicsRenderTarget* renderTarget)
|
||||
Size MeasureInternal(text::UnicodeCodePoint codePoint, IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
if(renderTarget)
|
||||
if (renderTarget)
|
||||
{
|
||||
WindowsGDIRenderTarget* gdiRenderTarget=dynamic_cast<WindowsGDIRenderTarget*>(renderTarget);
|
||||
WinDC* dc=gdiRenderTarget->GetDC();
|
||||
WindowsGDIRenderTarget* gdiRenderTarget = dynamic_cast<WindowsGDIRenderTarget*>(renderTarget);
|
||||
WinDC* dc = gdiRenderTarget->GetDC();
|
||||
dc->SetFont(font);
|
||||
SIZE size=dc->MeasureBuffer(&character, 1, -1);
|
||||
|
||||
vint count = text::UTF16SPFirst(codePoint.characters[0]) && text::UTF16SPSecond(codePoint.characters[1]) ? 2 : 1;
|
||||
SIZE size = dc->MeasureBuffer(codePoint.characters, count, -1);
|
||||
return Size(size.cx, size.cy);
|
||||
}
|
||||
else
|
||||
@@ -10671,16 +10690,16 @@ CachedResourceAllocator
|
||||
}
|
||||
}
|
||||
|
||||
vint MeasureWidthInternal(wchar_t character, IGuiGraphicsRenderTarget* renderTarget)
|
||||
vint MeasureWidthInternal(text::UnicodeCodePoint codePoint, IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
return MeasureInternal(character, renderTarget).x;
|
||||
return MeasureInternal(codePoint, renderTarget).x;
|
||||
}
|
||||
|
||||
vint GetRowHeightInternal(IGuiGraphicsRenderTarget* renderTarget)
|
||||
{
|
||||
if(renderTarget)
|
||||
{
|
||||
return MeasureInternal(L' ', renderTarget).y;
|
||||
return MeasureInternal({ L' ' }, renderTarget).y;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -9,4 +9,234 @@
|
||||
</ControlTemplate>
|
||||
</Instance>
|
||||
</Instance>
|
||||
|
||||
<Instance name="SharedSizeItemTemplateResource">
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::SharedSizeItemTemplate">
|
||||
<ref.Parameter Name="ViewModel" Class="demo::MyTextItem"/>
|
||||
<ControlTemplate MinSizeLimitation="LimitToElementAndChildren">
|
||||
<SharedSizeItem Group="EnglishNumber" SharedWidth="true" AlignmentToParent="left:0 top:0 right:0 bottom:0">
|
||||
<Button Text-bind="ViewModel.Name">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
</Button>
|
||||
</SharedSizeItem>
|
||||
</ControlTemplate>
|
||||
</Instance>
|
||||
</Instance>
|
||||
|
||||
<Instance name="SharedSizeTextItemTemplateResource">
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::SharedSizeTextItemTemplate">
|
||||
<ref.Parameter Name="ViewModel" Class="demo::MyTextItem"/>
|
||||
<TextListItemTemplate ref.Name="self" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<SharedSizeItem Group="EnglishNumber" SharedWidth="true" AlignmentToParent="left:-1 top:5 right:5 bottom:5">
|
||||
<SolidLabel Text-bind="ViewModel.Name" Font-bind="self.Font" Color-bind="self.TextColor"/>
|
||||
</SharedSizeItem>
|
||||
</TextListItemTemplate>
|
||||
</Instance>
|
||||
</Instance>
|
||||
|
||||
<Instance name="EnglishNumbersControllerResource">
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::EnglishNumbersController">
|
||||
<ref.Members>
|
||||
<![CDATA[
|
||||
@cpp:Private
|
||||
var counter : int = 0;
|
||||
|
||||
prop ItemsToBind : observe MyTextItem^[] = {} {const, not observe}
|
||||
|
||||
@cpp:Private
|
||||
func ToText_1to9(i : int) : string
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1: { return "one"; }
|
||||
case 2: { return "two"; }
|
||||
case 3: { return "three"; }
|
||||
case 4: { return "four"; }
|
||||
case 5: { return "five"; }
|
||||
case 6: { return "six"; }
|
||||
case 7: { return "seven"; }
|
||||
case 8: { return "eight"; }
|
||||
case 9: { return "nine"; }
|
||||
}
|
||||
raise "ToText_1to9: Number out of range.";
|
||||
}
|
||||
|
||||
@cpp:Private
|
||||
func ToText_11to19(i : int) : string
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1: { return "eleven"; }
|
||||
case 2: { return "twelve"; }
|
||||
case 3: { return "thirteen"; }
|
||||
case 4: { return "fourteen"; }
|
||||
case 5: { return "fifteen"; }
|
||||
case 6: { return "sixteen"; }
|
||||
case 7: { return "seventeen"; }
|
||||
case 8: { return "eightteen"; }
|
||||
case 9: { return "nineteen"; }
|
||||
}
|
||||
raise "ToText_11to19: Number out of range.";
|
||||
}
|
||||
|
||||
@cpp:Private
|
||||
func NumberToText_1To99(i : int) : string
|
||||
{
|
||||
switch (i / 10)
|
||||
{
|
||||
case 0: { return ToText_1to9(i % 10); }
|
||||
case 1: { return i == 10 ? "ten" : ToText_11to19(i % 10); }
|
||||
case 2: { return i % 10 == 0 ? "twenty" : "twenty-" & ToText_1to9(i % 10); }
|
||||
case 3: { return i % 10 == 0 ? "thirty" : "thirty-" & ToText_1to9(i % 10); }
|
||||
case 4: { return i % 10 == 0 ? "fourty" : "fourty-" & ToText_1to9(i % 10); }
|
||||
case 5: { return i % 10 == 0 ? "fifty" : "fifty-" & ToText_1to9(i % 10); }
|
||||
case 6: { return i % 10 == 0 ? "sixty" : "sixty-" & ToText_1to9(i % 10); }
|
||||
case 7: { return i % 10 == 0 ? "seventy" : "seventy-" & ToText_1to9(i % 10); }
|
||||
case 8: { return i % 10 == 0 ? "eighty" : "eighty-" & ToText_1to9(i % 10); }
|
||||
case 9: { return i % 10 == 0 ? "ninety" : "ninety-" & ToText_1to9(i % 10); }
|
||||
}
|
||||
raise "NumberToText_1To99: Number out of range.";
|
||||
}
|
||||
|
||||
@cpp:Private
|
||||
func NumberToText_0to999(i : int) : string
|
||||
{
|
||||
if (i < 100) { return NumberToText_1To99(i); }
|
||||
return ToText_1to9(i / 100) & " hundred" & (i % 100 == 0 ? "" : " and " & NumberToText_1To99(i % 100));
|
||||
}
|
||||
|
||||
@cpp:Private
|
||||
func NumberToText(i : int) : string
|
||||
{
|
||||
if (i == 0) { return "zero"; }
|
||||
if (i < 1000) { return NumberToText_0to999(i); }
|
||||
return "Number too large: " & i;
|
||||
}
|
||||
]]>
|
||||
</ref.Members>
|
||||
<CustomControl ref.Name="self">
|
||||
<GroupBox Text-bind="self.Text">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:-1"/>
|
||||
<att.ContainerComposition-set InternalMargin="left:5 top:0 right:5 bottom:5"/>
|
||||
<Stack Direction="Vertical" Padding="5" AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<StackItem>
|
||||
<Button Alt="A" Text="Add 10 items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
for (i in range [0, 9])
|
||||
{
|
||||
var textItem = new demo::MyTextItem^();
|
||||
textItem.Name = self.NumberToText(self.counter + i);
|
||||
self.ItemsToBind.Add(textItem);
|
||||
}
|
||||
|
||||
self.counter = self.counter + 10;
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="O" Text="Remove odd items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
var i = 0;
|
||||
while (i < self.ItemsToBind.Count)
|
||||
{
|
||||
self.ItemsToBind.RemoveAt(i);
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="E" Text="Remove even items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
var i = 1;
|
||||
while (i < self.ItemsToBind.Count)
|
||||
{
|
||||
self.ItemsToBind.RemoveAt(i);
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="C" Text="Clear">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
self.ItemsToBind.Clear();
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="R" Text="Reset Counter">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
self.counter = 0;
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
</Stack>
|
||||
</GroupBox>
|
||||
</CustomControl>
|
||||
</Instance>
|
||||
</Instance>
|
||||
|
||||
<Instance name="EnglishNumbersControllerTabPageResource">
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::EnglishNumbersControllerTabPage" xmlns:demo="demo::*">
|
||||
<ref.Members>
|
||||
<![CDATA[
|
||||
prop ItemsToBind : observe MyTextItem^[] = {} {const, not observe}
|
||||
prop ContentComposition: GuiGraphicsComposition* = null {const, not observe}
|
||||
]]>
|
||||
</ref.Members>
|
||||
<ref.Ctor>
|
||||
<![CDATA[
|
||||
{
|
||||
SetItemsToBind(controller.ItemsToBind);
|
||||
SetContentComposition(content);
|
||||
}
|
||||
]]>
|
||||
</ref.Ctor>
|
||||
<TabPage>
|
||||
<Table AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<att.Rows>
|
||||
<_>composeType:Percentage percentage:1.0</_>
|
||||
</att.Rows>
|
||||
<att.Columns>
|
||||
<_>composeType:Percentage percentage:1.0</_>
|
||||
<_>composeType:MinSize</_>
|
||||
</att.Columns>
|
||||
|
||||
<Cell ref.Name="content" Site="row:0 column:0">
|
||||
</Cell>
|
||||
<Cell Site="row:0 column:1">
|
||||
<demo:EnglishNumbersController ref.Name="controller" Text="Operations">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
</demo:EnglishNumbersController>
|
||||
</Cell>
|
||||
</Table>
|
||||
</TabPage>
|
||||
</Instance>
|
||||
</Instance>
|
||||
</Folder>
|
||||
@@ -1,75 +1,4 @@
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::RepeatTabPage">
|
||||
<ref.Members>
|
||||
<![CDATA[
|
||||
var counter : int = 0;
|
||||
var itemsToBind : observe MyTextItem^[] = {};
|
||||
|
||||
func ToText_1to9(i : int) : string
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1: { return "one"; }
|
||||
case 2: { return "two"; }
|
||||
case 3: { return "three"; }
|
||||
case 4: { return "four"; }
|
||||
case 5: { return "five"; }
|
||||
case 6: { return "six"; }
|
||||
case 7: { return "seven"; }
|
||||
case 8: { return "eight"; }
|
||||
case 9: { return "nine"; }
|
||||
}
|
||||
raise "ToText_1to9: Number out of range.";
|
||||
}
|
||||
|
||||
func ToText_11to19(i : int) : string
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case 1: { return "eleven"; }
|
||||
case 2: { return "twelve"; }
|
||||
case 3: { return "thirteen"; }
|
||||
case 4: { return "fourteen"; }
|
||||
case 5: { return "fifteen"; }
|
||||
case 6: { return "sixteen"; }
|
||||
case 7: { return "seventeen"; }
|
||||
case 8: { return "eightteen"; }
|
||||
case 9: { return "nineteen"; }
|
||||
}
|
||||
raise "ToText_11to19: Number out of range.";
|
||||
}
|
||||
|
||||
func NumberToText_1To99(i : int) : string
|
||||
{
|
||||
switch (i / 10)
|
||||
{
|
||||
case 0: { return ToText_1to9(i % 10); }
|
||||
case 1: { return i == 10 ? "ten" : ToText_11to19(i % 10); }
|
||||
case 2: { return i % 10 == 0 ? "twenty" : "twenty-" & ToText_1to9(i % 10); }
|
||||
case 3: { return i % 10 == 0 ? "thirty" : "thirty-" & ToText_1to9(i % 10); }
|
||||
case 4: { return i % 10 == 0 ? "fourty" : "fourty-" & ToText_1to9(i % 10); }
|
||||
case 5: { return i % 10 == 0 ? "fifty" : "fifty-" & ToText_1to9(i % 10); }
|
||||
case 6: { return i % 10 == 0 ? "sixty" : "sixty-" & ToText_1to9(i % 10); }
|
||||
case 7: { return i % 10 == 0 ? "seventy" : "seventy-" & ToText_1to9(i % 10); }
|
||||
case 8: { return i % 10 == 0 ? "eighty" : "eighty-" & ToText_1to9(i % 10); }
|
||||
case 9: { return i % 10 == 0 ? "ninety" : "ninety-" & ToText_1to9(i % 10); }
|
||||
}
|
||||
raise "NumberToText_1To99: Number out of range.";
|
||||
}
|
||||
|
||||
func NumberToText_0to999(i : int) : string
|
||||
{
|
||||
if (i < 100) { return NumberToText_1To99(i); }
|
||||
return ToText_1to9(i / 100) & " hundred" & (i % 100 == 0 ? "" : " and " & NumberToText_1To99(i % 100));
|
||||
}
|
||||
|
||||
func NumberToText(i : int) : string
|
||||
{
|
||||
if (i == 0) { return "zero"; }
|
||||
if (i < 1000) { return NumberToText_0to999(i); }
|
||||
return "Number too large: " & i;
|
||||
}
|
||||
]]>
|
||||
</ref.Members>
|
||||
<Instance ref.CodeBehind="false" ref.Class="demo::RepeatTabPage" xmlns:demo="demo::*">
|
||||
<TabPage ref.Name="self" Text="Repeat">
|
||||
<Table AlignmentToParent="left:0 top:0 right:0 bottom:0" CellPadding="5">
|
||||
<att.Rows>
|
||||
@@ -78,8 +7,7 @@
|
||||
<_>composeType:Absolute absolute:20</_>
|
||||
</att.Rows>
|
||||
<att.Columns>
|
||||
<_>composeType:Percentage percentage:0.5</_>
|
||||
<_>composeType:MinSize</_>
|
||||
<_>composeType:Percentage percentage:1.0</_>
|
||||
<_>composeType:Absolute absolute:20</_>
|
||||
</att.Columns>
|
||||
|
||||
@@ -87,121 +15,82 @@
|
||||
<Tab>
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<att.Pages>
|
||||
<TabPage Text="RepeatStack" Alt="S">
|
||||
<demo:EnglishNumbersControllerTabPage ref.Name="repeatStackTabPage" Text="RepeatStack" Alt="S">
|
||||
<att.ContentComposition-set>
|
||||
<ScrollContainer ExtendToFullWidth="true" HorizontalAlwaysVisible="false">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<RepeatStack ref.Name="repeatStack" AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<RepeatStack AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<att.Direction>Vertical</att.Direction>
|
||||
<att.Padding>5</att.Padding>
|
||||
<att.ExtraMargin>left:5 top:5 right:5 bottom:5</att.ExtraMargin>
|
||||
<att.ItemTemplate>demo::RepeatItemTemplate</att.ItemTemplate>
|
||||
<att.ItemSource-eval>self.itemsToBind</att.ItemSource-eval>
|
||||
<att.ItemSource-eval>repeatStackTabPage.ItemsToBind</att.ItemSource-eval>
|
||||
</RepeatStack>
|
||||
</ScrollContainer>
|
||||
</TabPage>
|
||||
<TabPage Text="RepeatFlow" Alt="F">
|
||||
</att.ContentComposition-set>
|
||||
</demo:EnglishNumbersControllerTabPage>
|
||||
|
||||
<demo:EnglishNumbersControllerTabPage ref.Name="repeatFlowTabPage" Text="RepeatFlow" Alt="F">
|
||||
<att.ContentComposition-set>
|
||||
<ScrollContainer ExtendToFullWidth="true" HorizontalAlwaysVisible="false">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<RepeatFlow ref.Name="repeatFlow" AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<RepeatFlow AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<att.RowPadding>5</att.RowPadding>
|
||||
<att.ColumnPadding>5</att.ColumnPadding>
|
||||
<att.ExtraMargin>left:5 top:5 right:5 bottom:5</att.ExtraMargin>
|
||||
<att.ItemTemplate>demo::RepeatItemTemplate</att.ItemTemplate>
|
||||
<att.ItemSource-eval>self.itemsToBind</att.ItemSource-eval>
|
||||
<att.ItemSource-eval>repeatFlowTabPage.ItemsToBind</att.ItemSource-eval>
|
||||
</RepeatFlow>
|
||||
</ScrollContainer>
|
||||
</TabPage>
|
||||
</att.ContentComposition-set>
|
||||
</demo:EnglishNumbersControllerTabPage>
|
||||
|
||||
<demo:EnglishNumbersControllerTabPage ref.Name="sharedSizeFlowTabPage" Text="SharedSize (RepeatFlow)" Alt="F">
|
||||
<att.ContentComposition-set>
|
||||
<ScrollContainer ExtendToFullWidth="true" HorizontalAlwaysVisible="false">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<SharedSizeRoot AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<RepeatFlow AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<att.RowPadding>5</att.RowPadding>
|
||||
<att.ColumnPadding>5</att.ColumnPadding>
|
||||
<att.ExtraMargin>left:5 top:5 right:5 bottom:5</att.ExtraMargin>
|
||||
<att.ItemTemplate>demo::SharedSizeItemTemplate</att.ItemTemplate>
|
||||
<att.ItemSource-eval>sharedSizeFlowTabPage.ItemsToBind</att.ItemSource-eval>
|
||||
</RepeatFlow>
|
||||
</SharedSizeRoot>
|
||||
</ScrollContainer>
|
||||
</att.ContentComposition-set>
|
||||
</demo:EnglishNumbersControllerTabPage>
|
||||
|
||||
<demo:EnglishNumbersControllerTabPage ref.Name="sharedSizeListTabPage" Text="SharedSize (TextList)" Alt="L">
|
||||
<att.ContentComposition-set>
|
||||
<SharedSizeRoot AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<BindableTextList HorizontalAlwaysVisible="false" VerticalAlwaysVisible="false" env.ItemType="demo::MyTextItem^">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<att.ItemTemplate>demo::SharedSizeTextItemTemplate</att.ItemTemplate>
|
||||
<att.TextProperty>Name</att.TextProperty>
|
||||
<att.ItemSource-eval>sharedSizeListTabPage.ItemsToBind</att.ItemSource-eval>
|
||||
</BindableTextList>
|
||||
</SharedSizeRoot>
|
||||
</att.ContentComposition-set>
|
||||
</demo:EnglishNumbersControllerTabPage>
|
||||
</att.Pages>
|
||||
</Tab>
|
||||
</Cell>
|
||||
|
||||
<Cell Site="row:0 column:1">
|
||||
<GroupBox Text="Operations">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:-1"/>
|
||||
<att.ContainerComposition-set InternalMargin="left:5 top:0 right:5 bottom:5"/>
|
||||
<Stack Direction="Vertical" Padding="5" AlignmentToParent="left:0 top:0 right:0 bottom:0" MinSizeLimitation="LimitToElementAndChildren">
|
||||
<StackItem>
|
||||
<Button Alt="A" Text="Add 10 items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
for (i in range [0, 9])
|
||||
{
|
||||
var textItem = new demo::MyTextItem^();
|
||||
textItem.Name = self.NumberToText(self.counter + i);
|
||||
self.itemsToBind.Add(textItem);
|
||||
}
|
||||
|
||||
self.counter = self.counter + 10;
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="O" Text="Remove odd items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
var i = 0;
|
||||
while (i < self.itemsToBind.Count)
|
||||
{
|
||||
self.itemsToBind.RemoveAt(i);
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="E" Text="Remove even items">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
var i = 1;
|
||||
while (i < self.itemsToBind.Count)
|
||||
{
|
||||
self.itemsToBind.RemoveAt(i);
|
||||
i = i + 1;
|
||||
}
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
<StackItem>
|
||||
<Button Alt="C" Text="Clear">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<ev.Clicked-eval>
|
||||
<![CDATA[
|
||||
{
|
||||
self.itemsToBind.Clear();
|
||||
}
|
||||
]]>
|
||||
</ev.Clicked-eval>
|
||||
</Button>
|
||||
</StackItem>
|
||||
</Stack>
|
||||
</GroupBox>
|
||||
</Cell>
|
||||
|
||||
<Cell Site="row:1 column:0 columnSpan:2">
|
||||
<Cell Site="row:1 column:0">
|
||||
<HTracker ref.Name="hTracker" TotalSize="10">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
</HTracker>
|
||||
</Cell>
|
||||
|
||||
<Cell Site="row:2 column:0 columnSpan:2">
|
||||
<Cell Site="row:2 column:0">
|
||||
<ProgressBar TotalSize="10" Position-bind="hTracker.Position">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
</ProgressBar>
|
||||
</Cell>
|
||||
|
||||
<Cell Site="row:0 column:2">
|
||||
<Cell Site="row:0 column:1">
|
||||
<VTracker TotalSize="5">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
</VTracker>
|
||||
|
||||
+2688
-1826
File diff suppressed because it is too large
Load Diff
+983
-633
File diff suppressed because it is too large
Load Diff
+128
-15
@@ -57,6 +57,10 @@ namespace vl
|
||||
IMPL_CPP_TYPE_INFO(demo::DocumentEditorToolstripConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::ElementTabPage)
|
||||
IMPL_CPP_TYPE_INFO(demo::ElementTabPageConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::EnglishNumbersController)
|
||||
IMPL_CPP_TYPE_INFO(demo::EnglishNumbersControllerConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::EnglishNumbersControllerTabPage)
|
||||
IMPL_CPP_TYPE_INFO(demo::EnglishNumbersControllerTabPageConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::GenderDisplayer)
|
||||
IMPL_CPP_TYPE_INFO(demo::GenderDisplayerConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::GenderEditor)
|
||||
@@ -90,6 +94,10 @@ namespace vl
|
||||
IMPL_CPP_TYPE_INFO(demo::ResponsiveTabPageConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::ResponsiveViewControl)
|
||||
IMPL_CPP_TYPE_INFO(demo::ResponsiveViewControlConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::SharedSizeItemTemplate)
|
||||
IMPL_CPP_TYPE_INFO(demo::SharedSizeItemTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::SharedSizeTextItemTemplate)
|
||||
IMPL_CPP_TYPE_INFO(demo::SharedSizeTextItemTemplateConstructor)
|
||||
IMPL_CPP_TYPE_INFO(demo::StringResource)
|
||||
IMPL_CPP_TYPE_INFO(demo::StyleGroup)
|
||||
IMPL_CPP_TYPE_INFO(demo::StyleItem)
|
||||
@@ -726,6 +734,75 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::demo::ElementTabPageConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::EnglishNumbersController)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
|
||||
CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersController*(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(NumberToText, { L"i" })
|
||||
CLASS_MEMBER_METHOD(NumberToText_0to999, { L"i" })
|
||||
CLASS_MEMBER_METHOD(NumberToText_1To99, { L"i" })
|
||||
CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" })
|
||||
CLASS_MEMBER_METHOD(ToText_11to19, { L"i" })
|
||||
CLASS_MEMBER_METHOD(ToText_1to9, { L"i" })
|
||||
CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind)
|
||||
CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind)
|
||||
CLASS_MEMBER_FIELD(counter)
|
||||
END_CLASS_MEMBER(::demo::EnglishNumbersController)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersController_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_2)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_3)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_4)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_5)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_6)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_7)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_8)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_9)
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::demo::EnglishNumbersControllerConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage)
|
||||
CLASS_MEMBER_BASE(::demo::EnglishNumbersControllerTabPageConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::demo::EnglishNumbersControllerTabPage*(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_instance_ctor_, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetContentComposition, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(GetItemsToBind, NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(SetContentComposition, { L"__vwsn_value_" })
|
||||
CLASS_MEMBER_METHOD(SetItemsToBind, { L"__vwsn_value_" })
|
||||
CLASS_MEMBER_FIELD(__vwsn_prop_ContentComposition)
|
||||
CLASS_MEMBER_FIELD(__vwsn_prop_ItemsToBind)
|
||||
CLASS_MEMBER_PROPERTY_READONLY(ContentComposition, GetContentComposition)
|
||||
CLASS_MEMBER_PROPERTY_READONLY(ItemsToBind, GetItemsToBind)
|
||||
END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPage)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPageConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::EnglishNumbersControllerTabPageConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_demo_EnglishNumbersControllerTabPage_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)
|
||||
CLASS_MEMBER_FIELD(content)
|
||||
CLASS_MEMBER_FIELD(controller)
|
||||
END_CLASS_MEMBER(::demo::EnglishNumbersControllerTabPageConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::GenderDisplayer)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::controls::GuiCustomControl)
|
||||
CLASS_MEMBER_BASE(::demo::GenderDisplayerConstructor)
|
||||
@@ -1058,13 +1135,6 @@ namespace vl
|
||||
CLASS_MEMBER_BASE(::vl::presentation::controls::GuiTabPage)
|
||||
CLASS_MEMBER_BASE(::demo::RepeatTabPageConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::demo::RepeatTabPage*(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(NumberToText, { L"i" })
|
||||
CLASS_MEMBER_METHOD(NumberToText_0to999, { L"i" })
|
||||
CLASS_MEMBER_METHOD(NumberToText_1To99, { L"i" })
|
||||
CLASS_MEMBER_METHOD(ToText_11to19, { L"i" })
|
||||
CLASS_MEMBER_METHOD(ToText_1to9, { L"i" })
|
||||
CLASS_MEMBER_FIELD(counter)
|
||||
CLASS_MEMBER_FIELD(itemsToBind)
|
||||
END_CLASS_MEMBER(::demo::RepeatTabPage)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::RepeatTabPageConstructor)
|
||||
@@ -1093,13 +1163,7 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_26)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_27)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_28)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_29)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_3)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_30)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_31)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_32)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_33)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_34)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_4)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_5)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_6)
|
||||
@@ -1107,9 +1171,11 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_8)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_9)
|
||||
CLASS_MEMBER_FIELD(hTracker)
|
||||
CLASS_MEMBER_FIELD(repeatFlow)
|
||||
CLASS_MEMBER_FIELD(repeatStack)
|
||||
CLASS_MEMBER_FIELD(repeatFlowTabPage)
|
||||
CLASS_MEMBER_FIELD(repeatStackTabPage)
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
CLASS_MEMBER_FIELD(sharedSizeFlowTabPage)
|
||||
CLASS_MEMBER_FIELD(sharedSizeListTabPage)
|
||||
END_CLASS_MEMBER(::demo::RepeatTabPageConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::ResponsiveGroupControl)
|
||||
@@ -1302,6 +1368,45 @@ namespace vl
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::demo::ResponsiveViewControlConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::SharedSizeItemTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiControlTemplate)
|
||||
CLASS_MEMBER_BASE(::demo::SharedSizeItemTemplateConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" })
|
||||
CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
|
||||
CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
|
||||
CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
|
||||
END_CLASS_MEMBER(::demo::SharedSizeItemTemplate)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::SharedSizeItemTemplateConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeItemTemplateConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeItemTemplate_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)
|
||||
CLASS_MEMBER_FIELD(ViewModel)
|
||||
END_CLASS_MEMBER(::demo::SharedSizeItemTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate)
|
||||
CLASS_MEMBER_BASE(::vl::presentation::templates::GuiTextListItemTemplate)
|
||||
CLASS_MEMBER_BASE(::demo::SharedSizeTextItemTemplateConstructor)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::demo::SharedSizeTextItemTemplate*(::vl::Ptr<::demo::MyTextItem>), { L"__vwsn_ctor_parameter_ViewModel" })
|
||||
CLASS_MEMBER_METHOD(GetViewModel, NO_PARAMETER)
|
||||
CLASS_MEMBER_FIELD(__vwsn_parameter_ViewModel)
|
||||
CLASS_MEMBER_PROPERTY_READONLY(ViewModel, GetViewModel)
|
||||
END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplate)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::SharedSizeTextItemTemplateConstructor)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::SharedSizeTextItemTemplateConstructor>(), NO_PARAMETER)
|
||||
CLASS_MEMBER_METHOD(__vwsn_demo_SharedSizeTextItemTemplate_Initialize, { L"__vwsn_this_" })
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_0)
|
||||
CLASS_MEMBER_FIELD(__vwsn_precompile_1)
|
||||
CLASS_MEMBER_FIELD(ViewModel)
|
||||
CLASS_MEMBER_FIELD(self)
|
||||
END_CLASS_MEMBER(::demo::SharedSizeTextItemTemplateConstructor)
|
||||
|
||||
BEGIN_CLASS_MEMBER(::demo::StringResource)
|
||||
CLASS_MEMBER_BASE(::vl::reflection::DescriptableObject)
|
||||
CLASS_MEMBER_CONSTRUCTOR(::vl::Ptr<::demo::StringResource>(), NO_PARAMETER)
|
||||
@@ -1555,6 +1660,10 @@ namespace vl
|
||||
ADD_TYPE_INFO(::demo::DocumentEditorToolstripConstructor)
|
||||
ADD_TYPE_INFO(::demo::ElementTabPage)
|
||||
ADD_TYPE_INFO(::demo::ElementTabPageConstructor)
|
||||
ADD_TYPE_INFO(::demo::EnglishNumbersController)
|
||||
ADD_TYPE_INFO(::demo::EnglishNumbersControllerConstructor)
|
||||
ADD_TYPE_INFO(::demo::EnglishNumbersControllerTabPage)
|
||||
ADD_TYPE_INFO(::demo::EnglishNumbersControllerTabPageConstructor)
|
||||
ADD_TYPE_INFO(::demo::GenderDisplayer)
|
||||
ADD_TYPE_INFO(::demo::GenderDisplayerConstructor)
|
||||
ADD_TYPE_INFO(::demo::GenderEditor)
|
||||
@@ -1588,6 +1697,10 @@ namespace vl
|
||||
ADD_TYPE_INFO(::demo::ResponsiveTabPageConstructor)
|
||||
ADD_TYPE_INFO(::demo::ResponsiveViewControl)
|
||||
ADD_TYPE_INFO(::demo::ResponsiveViewControlConstructor)
|
||||
ADD_TYPE_INFO(::demo::SharedSizeItemTemplate)
|
||||
ADD_TYPE_INFO(::demo::SharedSizeItemTemplateConstructor)
|
||||
ADD_TYPE_INFO(::demo::SharedSizeTextItemTemplate)
|
||||
ADD_TYPE_INFO(::demo::SharedSizeTextItemTemplateConstructor)
|
||||
ADD_TYPE_INFO(::demo::StringResource)
|
||||
ADD_TYPE_INFO(::demo::StyleGroup)
|
||||
ADD_TYPE_INFO(::demo::StyleItem)
|
||||
|
||||
@@ -60,6 +60,10 @@ namespace vl
|
||||
DECL_TYPE_INFO(::demo::DocumentEditorToolstripConstructor)
|
||||
DECL_TYPE_INFO(::demo::ElementTabPage)
|
||||
DECL_TYPE_INFO(::demo::ElementTabPageConstructor)
|
||||
DECL_TYPE_INFO(::demo::EnglishNumbersController)
|
||||
DECL_TYPE_INFO(::demo::EnglishNumbersControllerConstructor)
|
||||
DECL_TYPE_INFO(::demo::EnglishNumbersControllerTabPage)
|
||||
DECL_TYPE_INFO(::demo::EnglishNumbersControllerTabPageConstructor)
|
||||
DECL_TYPE_INFO(::demo::GenderDisplayer)
|
||||
DECL_TYPE_INFO(::demo::GenderDisplayerConstructor)
|
||||
DECL_TYPE_INFO(::demo::GenderEditor)
|
||||
@@ -93,6 +97,10 @@ namespace vl
|
||||
DECL_TYPE_INFO(::demo::ResponsiveTabPageConstructor)
|
||||
DECL_TYPE_INFO(::demo::ResponsiveViewControl)
|
||||
DECL_TYPE_INFO(::demo::ResponsiveViewControlConstructor)
|
||||
DECL_TYPE_INFO(::demo::SharedSizeItemTemplate)
|
||||
DECL_TYPE_INFO(::demo::SharedSizeItemTemplateConstructor)
|
||||
DECL_TYPE_INFO(::demo::SharedSizeTextItemTemplate)
|
||||
DECL_TYPE_INFO(::demo::SharedSizeTextItemTemplateConstructor)
|
||||
DECL_TYPE_INFO(::demo::StringResource)
|
||||
DECL_TYPE_INFO(::demo::StyleGroup)
|
||||
DECL_TYPE_INFO(::demo::StyleItem)
|
||||
|
||||
+4
-4
@@ -150,16 +150,16 @@ namespace demo
|
||||
if (::vl::__vwsn::This(this->dialogSaveDoc)->ShowDialog())
|
||||
{
|
||||
{
|
||||
auto __vwsn_switch_6 = ::vl::__vwsn::This(this->dialogSaveDoc)->GetFilterIndex();
|
||||
if ((__vwsn_switch_6 == static_cast<::vl::vint>(0)))
|
||||
auto __vwsn_switch_3 = ::vl::__vwsn::This(this->dialogSaveDoc)->GetFilterIndex();
|
||||
if ((__vwsn_switch_3 == static_cast<::vl::vint>(0)))
|
||||
{
|
||||
::vl::__vwsn::This(this->self)->SaveAsPrivateFormat(::vl::__vwsn::This(this->dialogSaveDoc)->GetFileName());
|
||||
}
|
||||
else if ((__vwsn_switch_6 == static_cast<::vl::vint>(1)))
|
||||
else if ((__vwsn_switch_3 == static_cast<::vl::vint>(1)))
|
||||
{
|
||||
::vl::__vwsn::This(this->self)->SaveAsRTF(::vl::__vwsn::This(this->dialogSaveDoc)->GetFileName());
|
||||
}
|
||||
else if ((__vwsn_switch_6 == static_cast<::vl::vint>(2)))
|
||||
else if ((__vwsn_switch_3 == static_cast<::vl::vint>(2)))
|
||||
{
|
||||
::vl::__vwsn::This(this->self)->SaveAsHTML(::vl::__vwsn::This(this->dialogSaveDoc)->GetFileName());
|
||||
}
|
||||
|
||||
+3
-3
@@ -78,8 +78,8 @@ namespace demo
|
||||
friend struct ::vl_workflow_global::__vwsnf117_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf118_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf119_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf120_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf121_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize__;
|
||||
friend struct ::vl_workflow_global::__vwsnf120_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize__;
|
||||
friend struct ::vl_workflow_global::__vwsnf121_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf122_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf123_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf124_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
@@ -114,7 +114,7 @@ namespace demo
|
||||
friend struct ::vl_workflow_global::__vwsnf153_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf154_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf155_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf156_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf97_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf98_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf99_Demo_demo_DocumentEditorBaseConstructor___vwsn_demo_DocumentEditorBase_Initialize_;
|
||||
#ifndef VCZH_DEBUG_NO_REFLECTION
|
||||
|
||||
+1
-1
@@ -181,7 +181,7 @@ namespace demo
|
||||
void DocumentEditorRibbon::__vwsn_instance_ctor_()
|
||||
{
|
||||
this->SetStyleGroups(this->GenerateStyleGroups());
|
||||
::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->document)->SelectionChanged, LAMBDA(::vl_workflow_global::__vwsnf172_Demo_demo_DocumentEditorRibbon___vwsn_instance_ctor__(this)));
|
||||
::vl::__vwsn::EventAttach(::vl::__vwsn::This(this->document)->SelectionChanged, LAMBDA(::vl_workflow_global::__vwsnf171_Demo_demo_DocumentEditorRibbon___vwsn_instance_ctor__(this)));
|
||||
}
|
||||
|
||||
DocumentEditorRibbon::~DocumentEditorRibbon()
|
||||
|
||||
+2
-2
@@ -28,7 +28,7 @@ namespace demo
|
||||
{
|
||||
class DocumentEditorRibbon : public ::demo::DocumentEditorBase, public ::demo::DocumentEditorRibbonConstructor, public ::vl::reflection::Description<DocumentEditorRibbon>
|
||||
{
|
||||
friend struct ::vl_workflow_global::__vwsnf172_Demo_demo_DocumentEditorRibbon___vwsn_instance_ctor__;
|
||||
friend struct ::vl_workflow_global::__vwsnf171_Demo_demo_DocumentEditorRibbon___vwsn_instance_ctor__;
|
||||
friend class ::demo::DocumentEditorRibbonConstructor;
|
||||
friend class ::vl_workflow_global::__vwsnc64_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend class ::vl_workflow_global::__vwsnc65_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize__vl_reflection_description_IValueSubscription;
|
||||
@@ -39,6 +39,7 @@ namespace demo
|
||||
friend class ::vl_workflow_global::__vwsnc70_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend class ::vl_workflow_global::__vwsnc71_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend class ::vl_workflow_global::__vwsnc72_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend struct ::vl_workflow_global::__vwsnf156_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf157_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf158_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf159_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
@@ -53,7 +54,6 @@ namespace demo
|
||||
friend struct ::vl_workflow_global::__vwsnf168_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf169_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf170_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf171_Demo_demo_DocumentEditorRibbonConstructor___vwsn_demo_DocumentEditorRibbon_Initialize_;
|
||||
#ifndef VCZH_DEBUG_NO_REFLECTION
|
||||
friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<DocumentEditorRibbon>;
|
||||
#endif
|
||||
|
||||
+1
-1
@@ -31,8 +31,8 @@ namespace demo
|
||||
friend class ::demo::DocumentEditorToolstripConstructor;
|
||||
friend class ::vl_workflow_global::__vwsnc76_Demo_demo_DocumentEditorToolstripConstructor___vwsn_demo_DocumentEditorToolstrip_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend class ::vl_workflow_global::__vwsnc77_Demo_demo_DocumentEditorToolstripConstructor___vwsn_demo_DocumentEditorToolstrip_Initialize__vl_reflection_description_IValueSubscription;
|
||||
friend struct ::vl_workflow_global::__vwsnf175_Demo_demo_DocumentEditorToolstripConstructor___vwsn_demo_DocumentEditorToolstrip_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf176_Demo_demo_DocumentEditorToolstripConstructor___vwsn_demo_DocumentEditorToolstrip_Initialize_;
|
||||
friend struct ::vl_workflow_global::__vwsnf177_Demo_demo_DocumentEditorToolstripConstructor___vwsn_demo_DocumentEditorToolstrip_Initialize_;
|
||||
#ifndef VCZH_DEBUG_NO_REFLECTION
|
||||
friend struct ::vl::reflection::description::CustomTypeDescriptorSelector<DocumentEditorToolstrip>;
|
||||
#endif
|
||||
|
||||
@@ -168,7 +168,7 @@
|
||||
<Cell Site="row:1 column:2">
|
||||
<BindableTextList ref.Name="bindableTextList" Alt="B" env.ItemType="demo::MyTextItem^" HorizontalAlwaysVisible="false" VerticalAlwaysVisible="false">
|
||||
<att.BoundsComposition-set AlignmentToParent="left:0 top:0 right:0 bottom:0"/>
|
||||
<att.ItemSource-eval>self.self.itemsToBind</att.ItemSource-eval>
|
||||
<att.ItemSource-eval>self.itemsToBind</att.ItemSource-eval>
|
||||
<att.TextProperty>Name</att.TextProperty>
|
||||
<att.CheckedProperty>Checked</att.CheckedProperty>
|
||||
</BindableTextList>
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user