Stetic.ImageInfo.ToCodeExpression C# (CSharp) Method

ToCodeExpression() public method

public ToCodeExpression ( GeneratorContext ctx ) : System.CodeDom.CodeExpression
ctx GeneratorContext
return System.CodeDom.CodeExpression
        public CodeExpression ToCodeExpression(GeneratorContext ctx)
        {
            switch (source) {
                case ImageSource.Resource:
                    return new CodeMethodInvokeExpression (
                        new CodeTypeReferenceExpression (typeof(Gdk.Pixbuf)),
                        "LoadFromResource",
                        new CodePrimitiveExpression (name)
                    );

                case ImageSource.Theme:
                    return ctx.GenerateLoadPixbuf (name, size);

                case ImageSource.File:
                    return new CodeObjectCreateExpression (
                        typeof(Gdk.Pixbuf),
                        new CodeMethodInvokeExpression (
                            new CodeTypeReferenceExpression (typeof(System.IO.Path)),
                            "Combine",
                            new CodePropertyReferenceExpression (
                                new CodePropertyReferenceExpression (
                                    new CodeTypeReferenceExpression (typeof(AppDomain)),
                                    "CurrentDomain"
                                ),
                                "BaseDirectory"
                            ),
                            new CodePrimitiveExpression (name)
                        )
                    );
            }
            return new CodePrimitiveExpression (null);
        }

Usage Example

Beispiel #1
0
        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);
        }