def __init__(self, x_region=None, y_region=None): if (x_region is None): x_region = Region1D() if (y_region is None): y_region = Region1D() self.x_region = x_region self.y_region = y_region
def update_world_region(): (w0, w1) = r.world_region w0 = w0 - 1 w1 = w1 + 1 print 'update_world_region1', w0, w1 wr = Region1D(w0, w1) print 'update_world_region2', wr r.setWorldRegion(wr)
def __init__(self, parent, world_region=None, view_region=None, callback=None, text_decimals=2, min_thickness=None, *args, **kw): if (world_region is None): world_region = Region1D() if (view_region is None): view_region = Region1D() (w0, w1) = world_region assert w0 != w1, 'w0 = w1 = %s' % w0 (v0, v1) = view_region assert v0 != v1, 'v0 = v1 = %s' % v0 if (w0 < w1): assert w0 <= v0 and v0 < v1 and v1 <= w1, 'w0 = %s, w1 = %s, v0 = %s, v1 = %s' % ( w0, w1, v0, v1) else: assert w0 >= v0 and v0 > v1 and v1 >= w1, 'w0 = %s, w1 = %s, v0 = %s, v1 = %s' % ( w0, w1, v0, v1) self.world_region = world_region self.view_region = view_region self.myCallback = callback self.text_decimals = text_decimals kw['text_func'] = self.determineText Scrollbar.__init__(self, parent, *args, **kw) self.setMinThickness(min_thickness) self.setViewRegion(v0, v1, do_callback=True)
def setWorldRegion(self, world_region): (v0, v1) = self.view_region (w0, w1) = world_region (ww0, ww1) = self.world_region if (w0 == ww0 and w1 == ww1): return if (w0 < w1): w0 = min(w0, v0) w1 = max(w1, v1) else: w0 = max(w0, v0) w1 = min(w1, v1) self.world_region = Region1D(w0, w1) self.setViewRegion(v0, v1, do_callback=True)
if (not view_region): view_region = self.region_scrollbar.view_region (v0, v1) = view_region x = 0.5 * (v0 + v1) s = formatDecimals(x, decimals=self.text_decimals) self.entry.set(s) def __getattr__(self, name): # dispatch everything not defined by RegionSelector to scrollbar widget try: return getattr(self.__dict__['region_scrollbar'], name) except: raise AttributeError, "RegionSelector instance has no attribute '%s'" % name if __name__ == '__main__': from memops.universal.Region1D import Region1D root = Tkinter.Tk() wr = Region1D(20.0, -4.0) vr = Region1D(7.2, 6.5) r = RegionSelector(root, label='1H', world_region=wr, view_region=vr) r.pack(fill=Tkinter.BOTH, expand=Tkinter.YES) root.mainloop()
(v0, v1) = self.view_region t0 = formatDecimals(v0, self.text_decimals) t1 = formatDecimals(v1, self.text_decimals) return (t0, t1) if __name__ == '__main__': def callback(view_region): print 'callback', view_region root = Tkinter.Tk() wr = Region1D(-0.5, 1.5) vr = Region1D(0.2, 0.5) r = RegionScrollbar(root, world_region=wr, view_region=vr, callback=callback, allow_resize=True, show_text=True) r.pack(fill=Tkinter.BOTH, expand=Tkinter.YES) def update_world_region(): (w0, w1) = r.world_region w0 = w0 - 1 w1 = w1 + 1