[IronPython] Viewlets: Any F# experts here?

Michael Foord fuzzyman at voidspace.org.uk
Fri Jun 27 08:26:56 PDT 2008


Curt Hagenlocher wrote:
> The Viewlet architecture in VSLab looks very closely tied to Visual 
> Studio.  The MK_E_UNAVAILABLE error is almost certainly because 
> Viewlet.Show is trying (and failing) to do a 
> Marshal.GetActiveObject("VisualStudio.DTE").

Ok - thanks for your help Curt. I guess using it standalone is out of 
the question then.

At some point I would like to learn F#, so I may revisit it then - but 
I'll drop it for now.

Michael

>
> On Fri, Jun 27, 2008 at 7:35 AM, Michael Foord 
> <fuzzyman at voidspace.org.uk <mailto:fuzzyman at voidspace.org.uk>> wrote:
>
>     Curt Hagenlocher wrote:
>
>         Oh, duh, it hosts itself inside that ViewletProxy that was
>         previously uninitialized :)
>          Are you doing this with Visual Studio running?
>
>
>     I tried hosting it in a separate form and it didn't show. I'm
>     running standalone under IronPython - no VS.
>
>     Michael
>
>
>         On Fri, Jun 27, 2008 at 6:52 AM, Curt Hagenlocher
>         <curt at hagenlocher.org <mailto:curt at hagenlocher.org>
>         <mailto:curt at hagenlocher.org <mailto:curt at hagenlocher.org>>>
>         wrote:
>
>            That "dir" error is a known problem with beta 3 -- and as you
>            might imagine, sky-high in priority on our list of things
>         to fix
>            for beta 4.
>                Viewlets appear to be user controls; you probably need
>         to host one
>            in a Form.
>
>            On Fri, Jun 27, 2008 at 6:45 AM, Michael Foord
>            <fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>
>         <mailto:fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>>> wrote:
>
>                Curt Hagenlocher wrote:
>
>                    A bit of quality time with Reflector shows that
>         there's a
>                    _viewletsProxy object which hasn't been
>         initialized.  You
>                    probably need to call VSLabFSICore.Viewlets.Init()
>         first.
>                     It's static, and in the vslabfsicore module.
>
>
>                Thanks Curt - your reflector-fu is greater than mine. I
>         should
>                spend some quality time with it.
>
>                Your advice gets me to the next step, I can make a
>                GraphControl flash momentarily into view (on creation), but
>                attempting to show it causes another explosion:
>
>
>                C:\compile\VSLab>C:\compile\IronPython-2.0B3\ipy.exe
>                -X:ExceptionDetail viewlet.
>                py
>                Operation unavailable (Exception from HRESULT: 0x800401E3
>                (MK_E_UNAVAILABLE))
>                 at
>              
>          System.Runtime.InteropServices.Marshal.GetActiveObject(Guid&
>                rclsid, IntPt
>                r reserved, Object& ppunk)
>                 at
>              
>          System.Runtime.InteropServices.Marshal.GetActiveObject(String
>                progID)
>                 at VSLabFSICore.Viewlet.Show()
>                 at GraphViewlet.GraphControl.Show()
>                 at _stub_$28##26(Closure , CallSite , CodeContext ,
>         Object )
>
>                 at _stub_MatchCaller(Object , CallSite , Object[] )
>                 at
>              
>          Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[]
>                args)
>                 at
>              
>          Microsoft.Scripting.Actions.UpdateDelegates.Update2[T,T0,T1,TRet](CallSite
>                site, T0 arg0, T1 arg1)
>                 at S$2.Initialize(CodeContext )
>                 at
>         IronPython.Hosting.PythonCommandLine.RunFileWorker(String
>                fileName)
>                 at IronPython.Hosting.PythonCommandLine.RunFile(String
>         fileName)
>                EnvironmentError: Operation unavailable (Exception from
>                HRESULT: 0x800401E3 (MK_
>                E_UNAVAILABLE))
>
>                The code that produces this is:
>
>
>                import clr
>                clr.AddReference('vslabfsicore')
>                clr.AddReference('vslabviewlets')
>
>                from VSLabFSICore import Viewlets
>                from GraphViewlet import GraphControl
>
>                Viewlets.Init()
>                g = GraphControl()
>                g.Show()
>
>                If instead of 'g.Show()' I attempt 'dir(g)' I get a
>         very odd
>                error!
>
>
>                C:\compile\VSLab>C:\compile\IronPython-2.0B3\ipy.exe
>                -X:ExceptionDetail viewlet.
>                py
>                'this' type cannot be an interface itself.
>                 at
>         System.RuntimeTypeHandle.GetFirstSlotForInterface(IntPtr
>                interfaceHandle)
>                 at System.RuntimeType.GetInterfaceMap(Type ifaceType)
>                 at
>              
>          Microsoft.Scripting.Generation.CompilerHelpers.TryGetCallableMethod(Method
>                Info method)
>                 at
>              
>          Microsoft.Scripting.Generation.CompilerHelpers.FilterNonVisibleMembers(Typ
>                e type, MemberInfo[] foundMembers)
>                 at
>              
>          IronPython.Runtime.Types.TypeInfo.MemberBinder.GetMember(Type
>                type, String
>                name, BindingFlags flags)
>                 at
>              
>          IronPython.Runtime.Types.TypeInfo.StandardResolver.ResolveMember(MemberBin
>                der binder, DynamicAction action, Type type, String name)
>                 at
>              
>          IronPython.Runtime.Types.TypeInfo.MemberResolver.ResolveMembers(MemberBind
>                er binder, DynamicAction action, Type type)
>                 at
>              
>          IronPython.Runtime.Types.TypeInfo.GetResolvedMembers(MemberBinder
>                memberBi
>                nder, DynamicAction action, Type type)
>                 at
>              
>          IronPython.Runtime.Calls.PythonBinder.ResolveMemberNames(CodeContext
>                conte
>                xt, PythonType type, PythonType owner, Dictionary`2
>         memberNames)
>                 at
>              
>          IronPython.Runtime.Types.PythonType.GetMemberNames(CodeContext
>                context, Ob
>                ject self)
>                 at
>              
>          IronPython.Runtime.Operations.PythonOps.GetAttrNames(CodeContext
>                context,
>                Object o)
>                 at IronPython.Runtime.Builtin.dir(CodeContext context,
>         Object o)
>                 at _stub_$26##24(Closure , CallSite , CodeContext ,
>         Object ,
>                Object )
>
>                 at _stub_MatchCaller(Object , CallSite , Object[] )
>                 at
>              
>          Microsoft.Scripting.Actions.CallSite`1.UpdateAndExecute(Object[]
>                args)
>                 at
>              
>          Microsoft.Scripting.Actions.UpdateDelegates.Update3[T,T0,T1,T2,TRet](CallS
>                ite site, T0 arg0, T1 arg1, T2 arg2)
>
>                 at S$2.Initialize(CodeContext )
>                 at
>         IronPython.Hosting.PythonCommandLine.RunFileWorker(String
>                fileName)
>                 at IronPython.Hosting.PythonCommandLine.RunFile(String
>         fileName)
>                ValueError: 'this' type cannot be an interface itself.
>
>
>                Incidentally, even when installed with VS Pro I can't get
>                VSLab to work *anyway* (this is Vista 64bit FWIW), so
>         the code
>                may not be ready for prime time.
>
>                I may try firing up reflector myself and see where it
>         takes me.
>
>                Michael Foord
>
>
>                    On Thu, Jun 26, 2008 at 2:58 PM, Michael Foord
>                    <fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>
>                    <mailto:fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>>
>                    <mailto:fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>
>                    <mailto:fuzzyman at voidspace.org.uk
>         <mailto:fuzzyman at voidspace.org.uk>>>> wrote:
>
>                       The viewlets that come with VSLab look *really*
>         cool.
>                    They're
>                       based on F# so I decided to see if they could be
>         used
>                    from IronPython.
>
>                       http://www.codeplex.com/vslab
>
>                       The dependencies are pretty hefty. You need F#
>                    installed *and*
>                       Managed DirectX (June 2008 SDK ~450mb seems to
>         fulfil
>                    the dependency).
>
>                       To get at the viewlet assemblies you need Visual
>         Studio Pro
>                       installed as well, but they can be extracted
>         from the
>                    VSLabs msi
>                       installer without VS Pro.
>
>                       Ok, so with all the dependencies installed I
>         attempt to
>                    use them -
>                       and *boom*. Anyone here got any ideas?
>
>                       IronPython 2.0 Beta (2.0.0.3000) on .NET
>         2.0.50727.1434
>                       Copyright (c) Microsoft Corporation. All rights
>         reserved.
>                       >>> import clr
>                       >>> clr.AddReference('vslabfsicore')
>                       >>> clr.AddReference('vslabviewlets')
>                       >>> clr.AddReference('vslabcore')
>                       >>> from GraphViewlet import GraphControl
>                       >>> g = GraphControl()
>                       Traceback (most recent call last):
>                        File "<stdin>", line 1, in <module>
>                        File "vslabviewlets", line unknown, in .ctor
>                        File "vslabfsicore", line unknown, in .ctor
>                        File "System.Windows.Forms", line unknown, in
>         get_Controls
>                        File "System.Windows.Forms", line unknown, in
>                    get_Properties
>                       SystemError: Object reference not set to an
>         instance of
>                    an object.
>
>
>                       Interesting that the explosion is inside winforms.
>                    Referencing
>                       that assembly first makes knows difference.
>
>                       Michael Foord
>
>
>                       --    http://www.ironpythoninaction.com/
>                       http://www.voidspace.org.uk/
>                       http://www.trypython.org/
>                       http://www.ironpython.info/
>                       http://www.theotherdelia.co.uk/
>                       http://www.resolverhacks.net/
>
>                       _______________________________________________
>                       Users mailing list
>                       Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>
>                    <mailto:Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>>
>                    <mailto:Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>
>                    <mailto:Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>>>
>
>                                
>         http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
>                  
>          ------------------------------------------------------------------------
>
>
>
>                    _______________________________________________
>                    Users mailing list
>                    Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>
>         <mailto:Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>>
>                  
>          http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>                    
>
>
>                --        http://www.ironpythoninaction.com/
>                http://www.voidspace.org.uk/
>                http://www.trypython.org/
>                http://www.ironpython.info/
>                http://www.theotherdelia.co.uk/
>                http://www.resolverhacks.net/
>
>                _______________________________________________
>                Users mailing list
>                Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>
>         <mailto:Users at lists.ironpython.com
>         <mailto:Users at lists.ironpython.com>>
>              
>          http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
>
>         ------------------------------------------------------------------------
>
>         _______________________________________________
>         Users mailing list
>         Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>         http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>          
>
>
>
>     -- 
>     http://www.ironpythoninaction.com/
>     http://www.voidspace.org.uk/
>     http://www.trypython.org/
>     http://www.ironpython.info/
>     http://www.theotherdelia.co.uk/
>     http://www.resolverhacks.net/
>
>     _______________________________________________
>     Users mailing list
>     Users at lists.ironpython.com <mailto:Users at lists.ironpython.com>
>     http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> Users mailing list
> Users at lists.ironpython.com
> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
>   


-- 
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/
http://www.trypython.org/
http://www.ironpython.info/
http://www.theotherdelia.co.uk/
http://www.resolverhacks.net/



More information about the Users mailing list