internal CodeExpression GenerateObjectBuild(GeneratorContext ctx)
{
string varName = ctx.NewId();
CodeVariableDeclarationStatement varDec = new CodeVariableDeclarationStatement(typeof(Gtk.IconSource), varName);
varDec.InitExpression = new CodeObjectCreateExpression(typeof(Gtk.IconSource));
ctx.Statements.Add(varDec);
CodeVariableReferenceExpression var = new CodeVariableReferenceExpression(varName);
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "Pixbuf"),
imageInfo.ToCodeExpression(ctx)
));
if (!SizeWildcarded)
{
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "SizeWildcarded"),
new CodePrimitiveExpression(false)
));
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "Size"),
new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression("Gtk.IconSize"),
Size.ToString()
)
));
}
if (!StateWildcarded)
{
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "StateWildcarded"),
new CodePrimitiveExpression(false)
));
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "State"),
new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression("Gtk.StateType"),
State.ToString()
)
));
}
if (!DirectionWildcarded)
{
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "DirectionWildcarded"),
new CodePrimitiveExpression(false)
));
ctx.Statements.Add(new CodeAssignStatement(
new CodePropertyReferenceExpression(var, "Direction"),
new CodeFieldReferenceExpression(
new CodeTypeReferenceExpression("Gtk.TextDirection"),
Direction.ToString()
)
));
}
return(var);
}