示例#1
0
    def setUp(self):

        self.model = SimpleGridModel(
            data=[[None, 2], [3, 4]],
            rows=[GridRow(label="foo"), GridRow(label="bar")],
            columns=[GridColumn(label="cfoo"), GridColumn(label="cbar")],
        )
示例#2
0
    def setUp(self):

        self.model = SimpleGridModel(data=[[None,2],[3,4]],
                                     rows=[GridRow(label='foo'),
                                           GridRow(label='bar')],
                                     columns=[GridColumn(label='cfoo'),
                                              GridColumn(label='cbar')]
                                     )

        return
示例#3
0
    def setUp(self):

        self.model_1 = SimpleGridModel(
            data=[[1, 2], [3, 4]],
            rows=[GridRow(label="foo"), GridRow(label="bar")],
            columns=[GridColumn(label="cfoo"), GridColumn(label="cbar")],
        )
        self.model_2 = SimpleGridModel(
            data=[[3, 4, 5], [6, 7, 8]],
            rows=[GridRow(label="baz"), GridRow(label="bat")],
            columns=[
                GridColumn(label="cfoo_2"),
                GridColumn(label="cbar_2"),
                GridColumn(label="cbaz_2"),
            ],
        )

        self.model = CompositeGridModel(data=[self.model_1, self.model_2])
示例#4
0
    def setUp(self):

        self.model_1 = SimpleGridModel(data=[[1,2],[3,4]],
                                       rows=[GridRow(label='foo'),
                                             GridRow(label='bar')],
                                       columns=[GridColumn(label='cfoo'),
                                                GridColumn(label='cbar')]
                                       )
        self.model_2 = SimpleGridModel(data=[[3,4,5],[6,7,8]],
                                       rows=[GridRow(label='baz'),
                                             GridRow(label='bat')],
                                       columns=[GridColumn(label='cfoo_2'),
                                                GridColumn(label='cbar_2'),
                                                GridColumn(label='cbaz_2')]
                                       )

        self.model = CompositeGridModel(data=[self.model_1, self.model_2])

        return
class MainWindow(SplitApplicationWindow):
    """ The main application window. """

    #### 'SplitApplicationWindow' interface ###################################

    # The ratio of the size of the left/top pane to the right/bottom pane.
    ratio = Float(0.3)

    # The direction in which the window is split.
    direction = Str('vertical')

    # The data used to create the SimpleGridModel
    data = [['bob', 1, True, Float], ['sarah', 45, True, Str],
            ['jonas', -3, False, direction]]

    rows = [
        GridRow(name='Row 1'),
        GridRow(name='Row 2'),
        GridRow(name='Row 3')
    ]

    cols = [
        GridColumn(name='Name'),
        GridColumn(name='Index', read_only=True),
        GridColumn(name='Veracity'),
        GridColumn(name='Object')
    ]

    # The data used to create the TraitGridModel
    trait_data = [
        GridRow(name='Bob', index=1, veracity=True, object=Float),
        GridRow(name='Sarah', index=45, veracity=True, object=Str),
        GridRow(name='Jonas', index=-3, veracity=False, object=direction)
    ]

    trait_col = [
        TraitGridColumn(name='name', label='Name'),
        TraitGridColumn(name='index', label='Index', read_only=True),
        TraitGridColumn(name='veracity', label='Veracity'),
        TraitGridColumn(name='object', label='Object')
    ]

    ###########################################################################
    # Protected 'SplitApplicationWindow' interface.
    ###########################################################################

    def _create_lhs(self, parent):
        """ Creates the left hand side or top depending on the split. """

        #self._model = model = SimpleGridModel(data = self.data,
        #                                      rows = self.rows,
        #                                      columns = self.cols)

        self._model = model = TraitGridModel(data=self.trait_data,
                                             columns=self.trait_col,
                                             row_name_trait='name')

        self._grid = grid = Grid(parent, model=model)

        self._grid.on_trait_change(self._on_grid_anytrait_changed)

        return grid.control

    def _create_rhs(self, parent):
        """ Creates the right hand side or bottom depending on the split. """

        widget = self._grid

        self._python_shell = PythonShell(parent)
        self._python_shell.bind('widget', widget)
        self._python_shell.bind('w', widget)

        return self._python_shell.control

    ###########################################################################
    # Private interface.
    ###########################################################################

    def _create_content(self, parent):
        """ Create some context for an expandable panel. """

        tree = FileTree(parent, root=os.path.abspath(os.curdir))

        return tree.control

    #### Trait event handlers #################################################

    def _on_grid_anytrait_changed(self, tree, trait_name, old, new):
        """ Called when any trait on the tree has changed. """

        print(('trait', trait_name, 'value', new))

        return
示例#6
0
文件: grid.py 项目: ovevans/pyface
class MainWindow(SplitApplicationWindow):
    """ The main application window. """

    # 'SplitApplicationWindow' interface -----------------------------------

    # The ratio of the size of the left/top pane to the right/bottom pane.
    ratio = Float(0.3)

    # The direction in which the window is split.
    direction = Str("vertical")

    # The data used to create the SimpleGridModel
    data = [
        ["bob", 1, True, Float],
        ["sarah", 45, True, Str],
        ["jonas", -3, False, direction],
    ]

    rows = [
        GridRow(name="Row 1"),
        GridRow(name="Row 2"),
        GridRow(name="Row 3"),
    ]

    cols = [
        GridColumn(name="Name"),
        GridColumn(name="Index", read_only=True),
        GridColumn(name="Veracity"),
        GridColumn(name="Object"),
    ]

    # The data used to create the TraitGridModel
    trait_data = [
        GridRow(name="Bob", index=1, veracity=True, object=Float),
        GridRow(name="Sarah", index=45, veracity=True, object=Str),
        GridRow(name="Jonas", index=-3, veracity=False, object=direction),
    ]

    trait_col = [
        TraitGridColumn(name="name", label="Name"),
        TraitGridColumn(name="index", label="Index", read_only=True),
        TraitGridColumn(name="veracity", label="Veracity"),
        TraitGridColumn(name="object", label="Object"),
    ]

    # ------------------------------------------------------------------------
    # Protected 'SplitApplicationWindow' interface.
    # ------------------------------------------------------------------------

    def _create_lhs(self, parent):
        """ Creates the left hand side or top depending on the split. """

        self._model = model = TraitGridModel(data=self.trait_data,
                                             columns=self.trait_col,
                                             row_name_trait="name")

        self._grid = grid = Grid(parent, model=model)

        self._grid.observe(
            self._on_grid_anytrait_changed,
            match(lambda name, ctrait: True)  # listen to all traits
        )

        return grid.control

    def _create_rhs(self, parent):
        """ Creates the right hand side or bottom depending on the split. """

        widget = self._grid

        self._python_shell = PythonShell(parent)
        self._python_shell.bind("widget", widget)
        self._python_shell.bind("w", widget)

        return self._python_shell.control

    # ------------------------------------------------------------------------
    # Private interface.
    # ------------------------------------------------------------------------

    def _create_content(self, parent):
        """ Create some context for an expandable panel. """

        tree = FileTree(parent, root=os.path.abspath(os.curdir))

        return tree.control

    # Trait event handlers -------------------------------------------------

    def _on_grid_anytrait_changed(self, event):
        """ Called when any trait on the tree has changed. """

        print("trait", event.name, "value", event.new)

        return