Interesting but not sure quite what to make of it. There are plenty of
places where infinite recursions could happen, because there are lots of
places where code like the below could happen:
if x changes update y
...
if y changes update x
The API helps cut down on these problems in that if you set an attribute
in the API then if it is the same as the previous value it does nothing,
in particular the notifiers aren't called. (And it is the notifiers that
would generally lead to these kind of potential loops.) But I guess there
could be some kind of wierd numerical rounding errors which causes the
occasional odd behaviour. Or it could be something more serious, it's
hard to tell.
Wayne
On Tue, 9 Jan 2007, Justin Douglas wrote:
> Hi,
>
> I got the following error message when resizing a window. I got it twice,
> then couldn't get it again.
>
> At any rate there doesn't seem to be any deleterious effects. I thought I
> should report it though.
>
> Thanks,
>
> Justin
>
>
>
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/Scrollbar.py",
> line 6
> 47, in set
> self.callback(lo, hi)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 126, in view
> self.parent.xScroll(self, lo, hi)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 1299, in xScroll
> self.canvases[j][col].setXviewRegion(xview_region)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 544, in setXviewRegion
> self.updateView()
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 555, in updateView
> self.parent.view_set_func(self, self.xview_region, self.yview_region)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/ccpnmr/analysis/WindowPopup.py",
> line 3546, in viewSet
> canvas.xview.region = Util.checkSwapRegion(xview_region, axisUnit)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/ccpnmr/api/Analysis.py",
> line 12
> 159, in setRegion
> notify(self)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/ccpnmr/analysis/WindowPopup.py",
> line 2557, in changedAxisRegion
> self.changedViewRegion(axisRegion)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/ccpnmr/analysis/WindowPopup.py",
> line 2473, in changedViewRegion
> self.scrolled_window.setXviewRegion(Region1D(a0, a1), n)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 1679, in setXviewRegion
> panel[col].setRegion(xview_region)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/universal/Ticks.py",
> line
> 105, in setRegion
> self.updateTicks()
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 182, in updateTicks
> Ticks.updateTicks(self)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/universal/Ticks.py",
> line
> 112, in updateTicks
> self.drawTicks()
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/universal/Ticks.py",
> line
> 235, in drawTicks
> self.drawLine(*self.ruleLine1)
> File
> "/home/douglas/Documents/Programs/software/analysis/ccpnmr/ccpnmr1.0/python/memops/gui/ScrolledWindow.py",
> l
> ine 194, in drawLine
> return self.create_line(x0, y0, x1, y1, fill=self.fill)
> File "/sw/lib/python2.4/lib-tk/Tkinter.py", line 2090, in create_line
> return self._create('line', args, kw)
> RuntimeError: maximum recursion depth exceeded
>
|