Stetic.ProjectIconSource.GenerateObjectBuild C# (CSharp) Method

GenerateObjectBuild() private method

private GenerateObjectBuild ( GeneratorContext ctx ) : System.CodeDom.CodeExpression
ctx GeneratorContext
return System.CodeDom.CodeExpression
        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;
        }