Jimmy Schementi wrote:
Michael, under what situation does SL call your event handlers
repeatidly? I'd be interested to know if even c# event handlers do the
same thing in your situation.
Hey Jimmy. I don't know whether a minimal repro will be possible, or
whether it was something specific to my situation.
I have four comboboxes setup as two pairs (as you can see in the UI for
Try Python). Changing a selection in any of the two pairs will set the
selection to the corresponding entry in the paired combobox. Obviously
to avoid the programmatic selection change triggering *another* event I
unhook the handlers around it - which seemed to make no difference when
the event handlers were instance methods.
Approximation of the code for just two comboboxes:
class ComboHandler(object):
def __init__(class, combo1, combo2, combo3, combo4):
self.combo1 = combo1
self.combo2 = combo2
combo1.SelectedIndex = combo2.SelectedIndex = 0
self.hook_events()
def hook_events(self):
self.combo1.SelectionChanged += self.change1
self.combo2.SelectionChanged += self.change2
def unhook_events(self):
self.combo1.SelectionChanged -= self.change1
self.combo2.SelectionChanged -= self.change2
def change1(self, sender, event):
self.unhook_events()
self.combo2.SelectedIndex = self.combo1.SelectedIndex
self.hook_events()
def change2(self, sender, event):
self.unhook_events()
self.combo1.SelectedIndex = self.combo2.SelectedIndex
self.hook_events()
The code works when I turned it back into functions instead of instance
methods - but would call the handlers hundreds of times when left as
instance methods. I even tried storing a *single* reference to each of
the methods and hooking and unhooking the same objects rather than doing
a lookup each time. To no avail.
Given how much time I burned on it I was happy to end up with something
that worked...
All the best,
Michael
~Jimmy
On Sep 7, 2009, at 3:11 PM, "Michael Foord"
<[email protected]> wrote:
Bob Uva wrote:
Michael,
Saw your tweets about the Silverlight woes. Hope to avoid those
problems when I follow in your footsteps soon. I'm going to a
Silverlight one-day event in Redmond next week and would like to try
some IronPython - Silverlight stuff before I get there.
Generally developing for Silverlight with IronPython is great fun -
but this was a real pain point. :-)
Anyway, I've made real progress with Try Python.
http://www.trypython.org/
Michael
Bob
On Mon, Sep 7, 2009 at 3:05 PM, Michael Foord<[email protected]
wrote:
Bob Uva wrote:
I was able to get it working by, piece by piece, recreating the
class
in a different file. When I was done I had what looked like exactly
the same source but worked in one file, not the other. Couldn't get
the original to ever work, so I just went with the new one. Pretty
frustrating.
Odd. Not a problem I've ever had - but I've had my own
frustrations with
IronPython and Silverlight in the last couple of days (Silverlight
calling
my event handlers about a thousand times and even with the events
unhooked -
switching from instance methods to functions worked but screwed up
my app
architecture).
Michael
Bob
On Mon, Sep 7, 2009 at 2:30 PM, Michael Foord<[email protected]
wrote:
Bob Uva wrote:
I just started using IronPython and am using SharpDevelop as an
IDE.
I'm creating a REST web service, and have a class that has a
function
named 'run' in it. When I create an instance of the class and
then try
calling its run function I get a MissingMemberException saying
that
the class has no attribute 'run'. This exception is thrown from
Microsoft.Scripting.Actions.MatchCaller.Call2. Shown below is
the call
stack shown in the exception dialog from the IDE. I've even
reduced
the run function to just calling pass and that doesn't work.
Any ideas
where to look to debug this further?
Can you reproduce a minimal example - without seeing any code it
is
impossible to have any idea. The first suspect I'm afraid is
that the
object
isn't what you think it is and doesn't have a run member.
Michael
Thanks,
Bob
System.MissingMemberException: 'AddressFilesService' object has
no
attribute 'run'
at Microsoft.Scripting.Actions.MatchCaller.Call2
at
Microsoft.Scripting.Actions.CallSite<
Microsoft.Func<
Microsoft.Scripting.Actions.CallSite,
System.Object,
Microsoft.Scripting.Runtime.CodeContext,
System.Object>>.UpdateAndExecute
at Microsoft.Scripting.Actions.UpdateDelegates.Update2
at DLRCachedCode.<lambda$9>$51
at Microsoft.Scripting.Actions.MatchCaller.Call1
at
Microsoft.Scripting.Actions.CallSite<
Microsoft.Func<
Microsoft.Scripting.Actions.CallSite,
System.Object,System.Object>>.UpdateAndExecute
at Microsoft.Scripting.Actions.UpdateDelegates.Update1
at System.Threading.ThreadHelper.ThreadStart_Context
at System.Threading.ExecutionContext.Run
at System.Threading.ThreadHelper.ThreadStart
--
http://www.ironpythoninaction.com/
http://www.voidspace.org.uk/blog
_______________________________________________
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
--
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