Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 789a4dca4953f037223e830336ef4af3 > files > 677

python-enthought-enable-3.2.0-2mdv2010.0.i586.rpm



from enthought.enable.api import Component, Container, Label, \
        NativeScrollBar, Window
from enthought.enable.example_support import DemoFrame, demo_main


class MyFrame(DemoFrame):
    
    def _create_window(self):

        label = Label(text="h:\nv:", font="modern 16",
                      position=[20, 50], 
                      bounds=[100, 100],
                      bgcolor = "red",
                      color = "white",
                      hjustify = "center",
                      vjustify = "center")

        vscroll = NativeScrollBar(orientation = "vertical",
                                  bounds = [15, label.height],
                                  position = [label.x2, label.y],
                                  range = (0, 100.0, 10.0, 1.0),
                                  enabled = True)
        vscroll.on_trait_change(self._update_vscroll, "scroll_position")

        hscroll = NativeScrollBar(orientation = "horizontal",
                                  bounds = [label.width, 15],
                                  position = [label.x, label.y-15],
                                  range = (0, 100.0, 10.0, 1.0),
                                  enabled = True)
        hscroll.on_trait_change(self._update_hscroll, "scroll_position")

        container = Container(bounds=[200,200], border_visible=True,
                              padding=15)
        container.add(label, hscroll, vscroll)
        container.on_trait_change(self._update_layout, "bounds")
        container.on_trait_change(self._update_layout, "bounds_items")
        
        self.label = label
        self.hscroll = hscroll
        self.vscroll = vscroll

        return Window(self, -1, component=container)

    def _update_hscroll(self):
        text = self.label.text.split("\n")
        text[0] = "h: " + str(self.hscroll.scroll_position)
        self.label.text = "\n".join(text)

    def _update_vscroll(self):
        text = self.label.text.split("\n")
        text[1] = "v: " + str(self.vscroll.scroll_position)
        self.label.text = "\n".join(text)

    def _update_layout(self):
        self.vscroll._widget_moved = True
        self.hscroll._widget_moved = True


if __name__ == "__main__":
    demo_main(MyFrame, title="Scrollbar demo", size=(250,250))