On Fri, Jun 27, 2008 at 7:35 AM, Michael Foord
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> 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
<[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>>
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
<[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>> 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
<[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>>
<mailto:[EMAIL PROTECTED]
<mailto:[EMAIL PROTECTED]>
<mailto:[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",- Hide quoted text -