A MINIMAL reproduction of the error would be appropriate =) > -----Original Message----- > From: [email protected] [mailto:users- > [email protected]] On Behalf Of Kristian Jaksch > Sent: Wednesday, January 14, 2009 4:15 AM > To: Discussion of IronPython > Subject: Re: [IronPython] IronPython to JavaScript > > Thanks again for the reply. > > I must be getting something seriously wrong. I did what you said and I > don't get any Javascript error but I still get the same error as > before from Ironpython: > > "SystemError: Object reference not set to an instance of an object." > > I looked at the source code of your Web IDE and tried to understand > how you did it there. You are hooking up a button click with the > SetExample() function and that works just fine but if I try to call > the SetExample() directly from the "_method()" function in the > RefreshExamples class, then I get the same error as above. Below I > show what I mean (it's your code a bit modified): > > > setCode = ScriptableEvent() > load = Load() > > > def SetExample(name): > args = ScriptableEventArgs() > args.code = 'TESTING' > setCode.OnEvent(args) #SystemError: Object reference not set to > an instance of an object. > > > class RefreshExamples(Scriptable): > def _method(self): > SetExample('browserDOM') #THIS DOESN'T WORK (It makes the > call but gives the error above) > > > refresh = RefreshExamples() > > HtmlPage.RegisterScriptableObject("codeChange", codeChange) > HtmlPage.RegisterScriptableObject("refresh", refresh) > HtmlPage.RegisterScriptableObject("load", load) > HtmlPage.RegisterScriptableObject("setCode", setCode) > > # Default example > HtmlPage.Document.code.value = examples.browserDOM > > root = Canvas() > refresh._method() > > > Application.Current.RootVisual = root > > > Have I misunderstood this completely or shouldn't it be possible to > directly call the SetExample()? Please bear in mind that I've only > been programming Ironpython a couple of months :-) > > Mustn't these errors only depend on IronPython and have nothing to do > with the JavaScript? I mean, first is the Silverlight app built, and > this error occurs at that time so Javascript can't have any part in > the errors? > > I know it's much to ask for but would it be possible for me to send > you the minimalistic test website I have so you maybe can have a quick > look at it? Or if you maybe have a as small as possible project I can > have a look at. > > Again, thanks for all your help! > > > > 2009/1/14 Michael Foord <[email protected]>: > > Ahhh... there is a detail I missed out in that article. You can only > hook up > > the Javascript function after the Silverlight control has loaded. > This is > > *possibly* the cause of your problems. > > > > I do the hooking up in an onload function: > > > > > > function onload() { > > control = > document.getElementById('SilverlightPlugin'); > > control.Content.setCode.Event = setCode; > > } > > > > You pass this function in the online parameter in the Silverlight > object > > element: > > > > <object id="SilverlightPlugin" > > data="data:application/x-silverlight," type="application/x- > silverlight-2" > > width="450" height="540"> > > <param name="source" value="app.xap"/> > > <param name="onerror" value="onSilverlightError" /> > > <param name="onload" value="onload" /> > > > > Hopefully this sorts out the problem for you. > > > > Michael Foord > > > > Kristian Jaksch wrote: > >> > >> Thanks for the reply! > >> > >> No, I can't get it to work with Javascript either. I added the > script > >> below to my page: > >> > >> <script type="text/javascript"> > >> function some_function(sender, args) { > >> value = args.val; > >> alert(value); > >> } > >> > >> control = document.getElementById("sl2"); > >> control.Content.event.Event = some_function; // THIS > >> LINE GIVES AN ERROR > >> </script> > >> > >> I'm not sure about the exact translation of the error message (It's > in > >> swedish) but it's something like: > >> > >> "Error: Invalid pointer" > >> > >> I guess it has something to do with the error I receive in my > "app.py" > >> file as I described previously. > >> > >> I made a minimal app.py file to test it again but I still receive > the > >> same error. This file also test to get a string from Javascript to > >> Ironpython and that works just fine. Below is my complete file: > >> > >> > >> import clr, sys > >> > >> clr.AddReferenceToFile("Scriptable.dll") > >> > >> from System.Windows import Application > >> from System.Windows.Browser import * > >> from System.Windows.Controls import * > >> from System.Windows import Input > >> from Scriptable import * > >> > >> > >> class GetFromEditor(ScriptableForString): > >> def _method(self, string): > >> root.message.Text = string > >> #return new_string > >> > >> GetFromEditor = GetFromEditor() > >> > >> root = Application.Current.LoadRootVisual(UserControl(), "app.xaml") > >> > >> HtmlPage.RegisterScriptableObject("GetFromEditor", GetFromEditor) > >> > >> > >> event = ScriptableEvent() > >> > >> # This must also be registered > >> HtmlPage.RegisterScriptableObject("event", event) > >> > >> args = ScriptableEventArgs() > >> args.val = 'some string' > >> event.OnEvent(args) > >> > >> > >> It must be something I'm missing but I just can't see what it could > >> be. Do you know of any good example were this approach is used? > >> > >> Thanks again! > >> > >> > >> 2009/1/12 Michael Foord <[email protected]>: > >> > >>> > >>> xkrja wrote: > >>> > >>>> > >>>> I'm trying to call javascript from IronPython (via Silverlight 2) > but I > >>>> can' > >>>> get it to work properly. I looked at this example: > >>>> > >>>> > http://www.voidspace.org.uk/ironpython/silverlight/scriptable.shtml#id1 > 0 > >>>> > http://www.voidspace.org.uk/ironpython/silverlight/scriptable.shtml#id1 > 0 > >>>> It's explained very clearly but when I try to run my code I get a > System > >>>> Error: > >>>> > >>>> SystemError: Object reference not set to an instance of an object. > >>>> > >>>> I just inserted the lines of code found on the example page in my > >>>> IronPyton > >>>> code: > >>>> > >>>> event = ScriptableEvent() > >>>> > >>>> # This must also be registered > >>>> HtmlPage.RegisterScriptableObject("event", event) > >>>> > >>>> args = ScriptableEventArgs() > >>>> args.val = 'some string' > >>>> event.OnEvent(args) #This gives me a System Error > >>>> > >>>> I create a C# .dll as explained in the example and add a reference > to > >>>> it. > >>>> The source is below: > >>>> > >>>> using System; > >>>> using System.Windows.Browser; > >>>> > >>>> namespace Scriptable > >>>> { > >>>> > >>>> [ScriptableTypeAttribute] > >>>> public class ScriptableForString > >>>> { > >>>> [ScriptableMemberAttribute] > >>>> public string method(string value) > >>>> { return this._method(value); } > >>>> > >>>> public virtual string _method(string value) > >>>> { return "override me"; } > >>>> } > >>>> > >>>> [ScriptableType] > >>>> public class ScriptableEvent > >>>> { > >>>> [ScriptableMember] > >>>> public event EventHandler Event; > >>>> > >>>> public virtual void OnEvent(ScriptableEventArgs e) > >>>> { > >>>> Event(this, e); > >>>> } > >>>> } > >>>> > >>>> [ScriptableTypeAttribute] > >>>> public class ScriptableEventArgs : EventArgs > >>>> { > >>>> private string _val; > >>>> > >>>> [ScriptableMemberAttribute] > >>>> public string val > >>>> { > >>>> get { return _val; } > >>>> set { _val = value; } > >>>> } > >>>> } > >>>> } > >>>> > >>>> Can anyone explain what I'm doing wrong? > >>>> Thanks for any help! > >>>> > >>>> > >>>> > >>> > >>> Hmmm... do you have any Javascript hooking up to the event? If you > don't, > >>> try hooking up to it and see if it makes any difference. > >>> > >>> The same code works for me. :-) > >>> > >>> Michael > >>> > >>> -- > >>> http://www.ironpythoninaction.com/ > >>> http://www.voidspace.org.uk/blog > >>> > >>> > >>> _______________________________________________ > >>> Users mailing list > >>> [email protected] > >>> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > >>> > >>> > >> > >> _______________________________________________ > >> Users mailing list > >> [email protected] > >> http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > >> > > > > > > -- > > http://www.ironpythoninaction.com/ > > http://www.voidspace.org.uk/blog > > > > > > _______________________________________________ > > Users mailing list > > [email protected] > > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com > > > _______________________________________________ > Users mailing list > [email protected] > http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
_______________________________________________ Users mailing list [email protected] http://lists.ironpython.com/listinfo.cgi/users-ironpython.com
