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 <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> 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@lists.ironpython.com <mailto:Users@lists.ironpython.com>
    http://lists.ironpython.com/listinfo.cgi/users-ironpython.com


------------------------------------------------------------------------

_______________________________________________
Users mailing list
Users@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@lists.ironpython.com
http://lists.ironpython.com/listinfo.cgi/users-ironpython.com

Reply via email to