Ejemplo n.º 1
0
    def default_traits_view(self):

        table_editor = TableEditor(columns=[
            ObjectColumn(name="name", label="name", resize_mode="stretch"),
            ObjectColumn(name="tag", label="File Type", resize_mode="fixed")
        ],
                                   auto_size=False,
                                   selected='object.selected_files',
                                   selection_mode='rows',
                                   editable=False)

        file_editor = FileEditor(allow_dir=True, filter=['*.tif'])

        image_editor = ImageEditor(scale=True,
                                   allow_upscaling=False,
                                   preserve_aspect_ratio=True)

        traits_view = View(VGroup(
            Group(UItem('image', editor=image_editor)),
            Group(Item('file_search', editor=file_editor, style='custom'),
                  Item('add_file_button', label='Add File'),
                  show_labels=False),
            HGroup(
                Item('key', editor=TextEditor(), style='simple'),
                Item('filter_file_button', label='Filter'),
            ),
            Group(Item('file_table', editor=table_editor),
                  Item('remove_file_button', label='Remove File'),
                  show_labels=False)),
                           style='custom',
                           resizable=True)

        return traits_view
Ejemplo n.º 2
0
class ViewportManager(Handler):
    #TODO make this a dialog
    from traitsui.api import (Item, View, ObjectColumn, TableEditor,
                              RangeEditor, CheckListEditor, OKButton)

    ctl = Any
    selected_col = Any

    def __init__(self, ctl, **kwargs):
        super(Handler, self).__init__(**kwargs)
        self.ctl = ctl

    traits_view = View(
        Item(
            name='metadata_list',
            object='object.ctl',
            editor=TableEditor(columns=[
                ObjectColumn(label='Window',
                             name='panel_scratch',
                             editor=TextEditor(enter_set=True,
                                               auto_set=False)),
                ObjectColumn(label='Dataset',
                             name='ds_name_scratch',
                             editor=TextEditor(enter_set=True, auto_set=False))
            ],
                               edit_view='tabular_view'),
            show_label=False,
            height=200,
            width=700,
        ),
        kind='nonmodal',
        buttons=[OKButton],
        title='If it were up to me it would all be in Swahili',
    )
Ejemplo n.º 3
0
 def traits_view(self):
     cols = [ObjectColumn(name='name'),
             ObjectColumn(name='connected'),
             ObjectColumn(name='com_class', label='Com. Class'),
             ObjectColumn(name='klass', label='Class')]
     table_editor = TableEditor(columns=cols,
                                editable=False,
                                selected='selected',
                                selection_mode='row')
     v = View(UItem('devices', editor=table_editor))
     return v
Ejemplo n.º 4
0
    def traits_view(self):
        cols = [ObjectColumn(name='name', editable=False),
                CheckboxColumn(name='display'),
                ObjectColumn(name='sigfigs')]

        sigma = VGroup(Item('age_nsigma'), Item('kca_nsigma'))

        v = okcancel_view(VGroup(UItem('columns', editor=TableEditor(columns=cols, sortable=False)),
                                 sigma,
                                 ),
                          title='Interpreted Age Table Options',
                          resizable=True,
                          height=500,
                          width=300)
        return v
Ejemplo n.º 5
0
    def default_traits_view(self):

        estimates_table_ed = TableEditor(
            columns=[
                ObjectColumn(name='name'),
            ],
            # menu = Menu(handler.do_edit_selected),
            auto_size=True,
            selection_mode='rows',
            selected_indices='_selected_indices',
            editable=False,  #Can still select rows BUT not add them
            # row_factory=True #allows you to "Add new item"
        )

        self.table_ed = estimates_table_ed

        view = View(
            Item('object.model.estimates', editor=estimates_table_ed),
            HGroup(
                Item('object.edit_button', show_label=False),
                Item('object.save_button', show_label=False),
                Item('object.add_button', show_label=False),
                Item('object.delete_button', show_label=False),
                Item('object.plot_button', show_label=False),
            ),
            resizable=
            True,  #buttons=[do_edit_selected,'Plot','Add','Delete',do_save_db],
            #handler=Database_Handler
        )

        return view
Ejemplo n.º 6
0
class ColorLegendWindow(HasTraits):
    legend = List(LegendEntry)
    traits_view = View(
        Item(name='legend',
             editor=TableEditor(
                 columns=[
                     ObjectColumn(label='ROI',
                                  editor=TextEditor(),
                                  name='metaregion',
                                  style='readonly',
                                  editable=False),
                     ColorColumn(label='color',
                                 editor=TextEditor(),
                                 name='blank',
                                 editable=False)
                 ],
                 selection_bg_color=None,
             ),
             show_label=False),
        kind='nonmodal',
        height=500,
        width=325,
        resizable=True,
        title='Fresh artichokes just -$3/lb',
    )
Ejemplo n.º 7
0
def test_progress_column():
    from traitsui.extras.progress_column import ProgressColumn
    progress_view = View(
        Item(
            'values',
            show_label=False,
            editor=TableEditor(
                columns=[
                    ObjectColumn(name='value'),
                    ProgressColumn(name='other_value'),
                ],
            )
        ),
        buttons=['OK'],
    )
    gui = GUI()
    object_list = ObjectList(
        values=[ListItem(value=str(i**2)) for i in range(10)]
    )

    with store_exceptions_on_all_threads():
        ui = object_list.edit_traits(view=progress_view)
        gui.process_events()
        press_ok_button(ui)
        gui.process_events()
Ejemplo n.º 8
0
class JobManager(HasTraits):

    jobs = List(Instance(Job))

    start = Button()

    def populate(self):
        self.jobs = [
            Job(name='job %02d' % i, percent_complete=0)
            for i in range(1, 25)
        ]

    def process(self):
        for job in self.jobs:
            job.percent_complete = min(
                job.percent_complete + random.randint(0, 3), 100)

        if any(job.percent_complete < 100 for job in self.jobs):
            GUI.invoke_after(100, self.process)

    def _start_fired(self):
        self.populate()
        GUI.invoke_after(1000, self.process)

    view = View(
        UItem('jobs', editor=TableEditor(
            columns=[
                ObjectColumn(name='name'),
                ProgressColumn(name='percent_complete'),
            ]
        )),
        UItem('start'),
        resizable=True,
    )
 def default_traits_view(self):
     table_editor = TableEditor(
         columns=[
             ObjectColumn(name='chemical',
                          editor=EnumEditor(name='available')),
             ObjectColumn(name='concentration',
                          editor=EnumEditor(name='available'))
         ],
         sortable=False,
         deletable=True,
         row_factory=self._row_factory,
     )
     return View(
         Heading('Formulation Mapping'),
         Label("Select the variables that correspond to each "
               "formulation component's name and concentration"),
         UItem("table_rows", editor=table_editor),
     )
Ejemplo n.º 10
0
    def __init__(self, PCAData, pca):
        super(PlotApp2, self).__init__()
        #self.phenotypes, self.pheno_dict = readPhenotypesFromCSVFile('..\..\IOdata\pca_phenotypes.csv')
        self.phenotypes, self.pheno_dict = readPhenotypesFromCSVFile(
            'c:\pythondata\pca_phenotypes.csv')
        #self.phenotypes, self.pheno_dict = readPhenotypesFromCSVFile_pd('C:\Python Project\Visual_pca_6_Oct13\IOdata\phenotypes_table_2.csv')
        print(self.phenotypes, self.pheno_dict)
        self.shapes_name = self.pheno_dict[self.phenotypes[0]]
        self.colors_name = self.pheno_dict[self.phenotypes[1]]
        self.sizes_name = self.pheno_dict[self.phenotypes[2]]
        self.colors = get_colors(len(self.colors_name))
        print('self.color=', self.colors_name)
        print('self.shape=', self.shapes_name)

        self.table_editor.columns = [ObjectColumn(name='name')]
        for i in range(len(PCAData) - 1):
            self.table_editor.columns.append(ObjectColumn(name="PCA" + str(i)))

        self.PCAData = PCAData
        self.pca = pca
        self.YPCA = [str(i) for i in range(len(PCAData) - 1)]
        self.XPCA = [str(i) for i in range(len(PCAData) - 1)]

        self.Shapedropdownlist = self.phenotypes
        self.Colordropdownlist = self.phenotypes
        self.Sizedropdownlist = self.phenotypes

        self.X_PCA = '0'
        self.Y_PCA = '0'

        self.Shape = self.phenotypes[0]
        self.Color = self.phenotypes[1]
        self.Size = self.phenotypes[2]

        self.activeScore = 'Pre Scores'
        self._updateTable()
        self._updateShapeTable()
        self._updateColorTable()
        self._updateSizeTable()
        self._update_Both_graph()

        return
    def default_traits_view(self):

        table_editor = TableEditor(columns=[
            ObjectColumn(name='name'),
            ObjectColumn(name='mean'),
            ObjectColumn(name='sigma')
        ],
                                   selected_indices='selected_table_index',
                                   show_toolbar=True,
                                   editable=True,
                                   deletable=True,
                                   sortable=False,
                                   row_factory=ViscosityModelParameters)

        return View(
            Item("calculation_mode"),
            Item("ingredient_models", editor=table_editor, style='custom'),
            HGroup(Item("add_viscosity_model_button"),
                   Item("remove_viscosity_model_button"),
                   show_labels=False))
Ejemplo n.º 12
0
 def update_columns(self):
     if self.info is not None:
         # only compute if we have a UI up and running
         column_names = set()
         for foobar in self.model.foobars:
             print foobar
             column_names |= set(foobar.trait_names(column_trait=True))
         columns = [
             ObjectColumn(name=name) for name in sorted(column_names)
         ]
         editor = self.info.ui.get_editors('foobars')[0]
         editor.columns = columns
Ejemplo n.º 13
0
 def rules_table(self):
     return TableEditor(
         sortable=False,
         auto_size=True,
         orientation="vertical",
         edit_view=View(
             Item("mask", editor=EnumEditor(values=sorted(self.model.masks.keys()))),
             Item("lower_limit", editor=optional_int_editor()),
             Item("upper_limit", editor=optional_int_editor()),
             Item("acts_on"),
             Item("result"),
         ),
         columns=[
             ObjectColumn(
                 name="mask",
                 label="Mask",
                 editable=False,
             ),
             ObjectColumn(
                 name="lower_limit",
                 label="Lower",
                 editable=False,
             ),
             ObjectColumn(
                 name="upper_limit",
                 label="Upper",
                 editable=False,
             ),
             ObjectColumn(
                 name="acts_on",
                 label="Acts On",
                 editable=False,
             ),
             ObjectColumn(
                 name="result",
                 label="Result",
                 editable=False,
             )
         ]
     )
Ejemplo n.º 14
0
class ChildModelView(ModelView):

    # Define the 'family' ModelView property that maps the child and its
    # parents into a list of objects that can be viewed as a table:
    family = Property(List)

    # Define a view showing the family as a table:
    view = View(
        Item(
            'family',
            show_label=False,
            editor=TableEditor(columns=[
                ObjectColumn(name='first_name'),
                ObjectColumn(name='last_name'),
            ]),
        ),
        resizable=True,
    )

    # Implementation of the 'family' property:
    def _get_family(self):
        return [self.model.father, self.model.mother, self.model]
Ejemplo n.º 15
0
def build_mc_parameter_table_editor(center_sim=None):
    """ TableEditor factory for the parameter scans that are possible to
    explore around the simulation provided.

    Note: the table editor doesn't support adding elements: it should be
    accompanied with a button which manually contributes to the list of
    ParameterScanDescriptions since that provides a higher level of controls
    anyway.
    """
    distro_tooltip = "Type of distribution to draw random numbers from."
    param1_tooltip = "First parameter to describe the distribution. " \
                     "Corresponds to the 'mean' for 'Gaussian' distribution " \
                     "and to the lower limit for values (inclusive) for " \
                     "'Uniform' distribution."
    param2_tooltip = "Second parameter to describe the distribution. " \
                     "Corresponds to the 'std dev' for 'Gaussian' " \
                     "distribution and to the higher limit for values " \
                     "(exclusive) for 'Uniform' distribution."
    columns = [
        ObjectColumn(name='name', label="Parameter name"),
        ObjectColumn(name='distribution', tooltip=distro_tooltip,
                     # Let's restrict the number of options to just
                     editor=EnumEditor(values=FAMILIAR_DISTROS)),
        ObjectColumn(name='dist_param1', tooltip=param1_tooltip,
                     label="Low/Mean/1st param"),
        ObjectColumn(name='dist_param2', tooltip=param2_tooltip,
                     label="High/Std Dev/2nd param"),
    ]
    if center_sim:
        center_val_col = ObjectColumn(name='center_value', style="readonly")
        columns.insert(1, center_val_col)

    editor = TableEditor(
        columns=columns,
        editable=True,
        sortable=False,
        deletable=True,
    )
    return editor
Ejemplo n.º 16
0
    def _updateSizeTable(self):
        del (self.size_table)

        columns = [ObjectColumn(name='name')]
        for i in range(len(self.sizes_name)):
            columns.append(ObjectColumn(name='s' + self.sizes_name[i]))
        data = SizeTable()
        self.size_table.append(data)
        self.size_columns = columns
        self.size_table.remove(data)

        data = SizeTable()
        data.name = self.psize
        for i in range(len(self.sizes_name)):
            exec('data.s' + self.sizes_name[i] + '="' + self.sizes_name[i] +
                 '"')
        self.size_table.append(data)

        data = SizeTable()
        data.name = "Size"
        for i in range(len(self.sizes_name)):
            exec('data.s' + self.sizes_name[i] + '="' + sizes[i] + '"')
        self.size_table.append(data)
Ejemplo n.º 17
0
def build_regular_parameter_table_editor(center_sim=None,
                                         num_values_fixed=False,
                                         support_parallel_params=False):
    """ TableEditor factory for the parameter scans that are possible to
    explore around the simulation provided.

    Note: the table editor doesn't support adding elements: it should be
    accompanied with a button which manually contributes to the list of
    ParameterScanDescriptions since that provides a higher level of controls
    anyway.
    """
    if num_values_fixed:
        num_value_style = "readonly"
    else:
        num_value_style = "simple"

    columns = [
        ObjectColumn(name='name', label="Parameter name"),
        ObjectColumn(name='low'),
        ObjectColumn(name='high'),
        ObjectColumn(name='num_values',
                     editor=RangeEditor(low=1, high=MAX_NUM_VALUES,
                                        mode='spinner'),
                     style=num_value_style),
        ObjectColumn(name='spacing'),
        ObjectColumn(name='scanned_values', format_func=format_array,
                     label="Final parameter values"),
    ]

    def format_adtl_params(param):
        if hasattr(param, "parallel_parameters") and param.parallel_parameters:
            return "%s param(s)" % len(param.parallel_parameters)
        return "None"

    if support_parallel_params:
        add_parallel_param_column = ModifiedObjectColumn(
            name='add_parallel_params', label="Add Parallel Param.",
            format_func=format_adtl_params
        )
        columns.append(add_parallel_param_column)

    if center_sim:
        center_val_col = ObjectColumn(name='center_value', style="readonly")
        columns.insert(1, center_val_col)

    editor = TableEditor(
        columns=columns,
        editable=True,
        sortable=False,
        deletable=True,
    )
    return editor
Ejemplo n.º 18
0
    def _updateColorTable(self):
        del (self.color_table)
        columns = [ObjectColumn(name='name')]
        for i in range(len(self.colors_name)):
            columns.append(
                ObjectColumn(name='s' + self.colors_name[i],
                             cell_color=getColor(self.colors[i])))
        data = ColorTable()
        self.color_table.append(data)
        self.color_columns = columns
        self.color_table.remove(data)

        data = ColorTable()
        data.name = self.pcolor
        for i in range(len(self.colors_name)):
            exec('data.s' + self.colors_name[i] + '="' + self.colors_name[i] +
                 '"')
        self.color_table.append(data)

        data = ColorTable()
        data.name = "Color"
        for i in range(len(self.colors_name)):
            exec('data.s' + self.colors_name[i] + '=""')
        self.color_table.append(data)
Ejemplo n.º 19
0
 def get_columns(self):
     cols = [
         CheckboxColumn(name='enabled'),
         CheckboxColumn(name='default'),
         ObjectColumn(name='kind'),
         ObjectColumn(name='name'),
         ObjectColumn(name='username'),
         ObjectColumn(name='password',
                      format_func=lambda x: '*' * len(x),
                      editor=TextEditor(password=True)),
         ObjectColumn(name='host'),
         ObjectColumn(name='dbname',
                      label='Database',
                      editor=EnumEditor(name='names')),
         ObjectColumn(name='path', style='readonly')
     ]
     return cols
Ejemplo n.º 20
0
    def test_progress_column(self):
        from traitsui.extras.progress_column import ProgressColumn

        progress_view = View(
            Item(
                "values",
                show_label=False,
                editor=TableEditor(columns=[
                    ObjectColumn(name="value"),
                    ProgressColumn(name="other_value"),
                ]),
            ),
            buttons=["OK"],
        )
        object_list = ObjectList(
            values=[ListItem(value=str(i**2)) for i in range(10)])
        tester = UITester()
        with tester.create_ui(object_list, dict(view=progress_view)):
            pass
Ejemplo n.º 21
0
    def test_progress_column(self):
        from traitsui.extras.progress_column import ProgressColumn

        progress_view = View(
            Item(
                "values",
                show_label=False,
                editor=TableEditor(columns=[
                    ObjectColumn(name="value"),
                    ProgressColumn(name="other_value"),
                ]),
            ),
            buttons=["OK"],
        )
        object_list = ObjectList(
            values=[ListItem(value=str(i**2)) for i in range(10)])

        with reraise_exceptions(), \
                create_ui(object_list, dict(view=progress_view)) as ui:
            process_cascade_events()
Ejemplo n.º 22
0
    def dynamic_view(self):
        return View(
            Item('electrodes',
                editor=TableEditor( columns = 
                    [ObjectColumn(label='electrode',
                                  editor=TextEditor(),
                                  style='readonly',
                                  editable=False,
                                  name='strrepr'),

                     ObjectColumn(label='corner',
                                  editor=CheckListEditor(
                                    values=['','corner 1','corner 2',
                                        'corner 3']),
                                  style='simple',
                                  name='corner'),

                     ObjectColumn(label='geometry',
                                  editor=CSVListEditor(),
                                  #editor=TextEditor(),
                                  #style='readonly',
                                  #editable=False,
                                  name='geom_coords'),
                                  
                     ObjectColumn(label='channel name',
                                  editor=TextEditor(),
                                  name='name'),

                     ObjectColumn(label='ROIs',
                                  editor=ListStrEditor(),
                                  editable=False, 
                                  name='roi_list'),
                     ],
                    selected='cur_sel',
                    deletable=True,
                    #row_factory=electrode_factory,
                    row_factory=self.electrode_factory,
                    ),
                show_label=False, height=350, width=700),

            HGroup(
                VGroup( 
                    Label( 'Automatic labeling parameters' ),
                    Item( 'name_stem' ),
                    HGroup(
                        Item( 'naming_convention' ),
                        Item( 'grid_type' ),
                    ),
                ),
                #VGroup(
                #    Label( 'ROI identification parameters' ),
                #    Item('parcellation'),
                #    Item('error_radius'),
                #),
                #VGroup(
                #    Label('Image parameters' ),
                #    Item('img_dpi', label='dpi'),
                #    Item('img_size', label='size', editor=CSVListEditor()),
                #),
            ),

            resizable=True, kind='panel', title='modify electrodes',
            #buttons=[OKButton, swap_action, label_auto_action,
            #    interpolate_action, save_montage_action, find_rois_action]) 

            buttons = [self.label_auto_action, self.swap_action, OKButton],
            menubar = MenuBar(
                Menu( self.label_auto_action, self.add_blank_action,
                    self.interpolate_action, self.find_rois_action, 
                    self.find_all_rois_action,
                    self.manual_reposition_action,
                    name='Operations',
                ),
                Menu( self.save_montage_action, self.save_csv_action,
                    self.save_coronal_slice_action,
                    name='Save Output',
                ),
            )
        )
Ejemplo n.º 23
0
    Person(name='Dave', age=39, phone='555-1212'),
    Person(name='Mike', age=28, phone='555-3526'),
    Person(name='Joe', age=34, phone='555-6943'),
    Person(name='Tom', age=22, phone='555-7586'),
    Person(name='Dick', age=63, phone='555-3895'),
    Person(name='Harry', age=46, phone='555-3285'),
    Person(name='Sally', age=43, phone='555-8797'),
    Person(name='Fields', age=31, phone='555-3547'),
]

# Table editor definition:
filters = [EvalFilterTemplate, MenuFilterTemplate, RuleFilterTemplate]

table_editor = TableEditor(
    columns=[
        ObjectColumn(name='name', width=0.4),
        ObjectColumn(name='age', width=0.2),
        ObjectColumn(name='phone', width=0.4),
    ],
    editable=True,
    deletable=True,
    sortable=True,
    sort_model=True,
    auto_size=False,
    filters=filters,
    search=RuleTableFilter(),
    row_factory=Person,
    show_toolbar=True,
)

Ejemplo n.º 24
0
    phone = Regex(value='000-0000', regex=r'\d\d\d[-]\d\d\d\d')

    traits_view = View('first_name',
                       'last_name',
                       'age',
                       'phone',
                       title='Create new employee',
                       width=0.18,
                       buttons=['OK', 'Cancel'])


# For readability, the TableEditor of the demo is defined here, rather than in
# the View:
table_editor = TableEditor(
    columns=[
        ObjectColumn(name='first_name', width=0.20),
        ObjectColumn(name='last_name', width=0.20),
        ExpressionColumn(label='Full Name',
                         width=0.30,
                         expression="'%s %s' % (object.first_name, "
                         "object.last_name )"),
        ObjectColumn(name='age', width=0.10, horizontal_alignment='center'),
        ObjectColumn(name='phone', width=0.20)
    ],
    deletable=True,
    sort_model=True,
    auto_size=False,
    orientation='vertical',
    edit_view=View(Group('first_name',
                         'last_name',
                         'age',
Ejemplo n.º 25
0
    reraise_exceptions,
    ToolkitName,
)


class MyEntry(HasTraits):
    name = Str()
    value = Int(0)
    color = RGBColor()

    entry_view = View(Group(Item("name"), Item("value"), Item("color")))


my_editor = TableEditor(
    columns=[
        ObjectColumn(name="name"),
        ObjectColumn(name="value"),
        ColorColumn(name="color", style="readonly"),
    ],
    orientation="vertical",
    show_toolbar=True,
    row_factory=MyEntry,
)


class MyData(HasTraits):
    data_list = List(MyEntry)

    view = View(Item("data_list", editor=my_editor, show_label=False))

Ejemplo n.º 26
0
    def init(self, parent):
        """Finishes initializing the editor by creating the underlying toolkit
        widget."""

        factory = self.factory
        self.filter = factory.filter

        columns = factory.columns[:]
        if (len(columns) == 0) and (len(self.value) > 0):
            columns = [
                ObjectColumn(name=name)
                for name in self.value[0].editable_traits()
            ]
        self.columns = columns

        if factory.table_view_factory is not None:
            self.table_view = factory.table_view_factory(editor=self)
        if factory.source_model_factory is not None:
            self.source_model = factory.source_model_factory(editor=self)
        if factory.model_factory is not None:
            self.model = factory.model_factory(editor=self)

        # Create the table view and model
        self.model.setDynamicSortFilter(True)
        self.model.setSourceModel(self.source_model)
        self.table_view.setModel(self.model)

        # Create the vertical header context menu and connect to its signals
        self.header_menu = QtGui.QMenu(self.table_view)
        insertable = factory.row_factory is not None
        if factory.editable:
            if insertable:
                action = self.header_menu.addAction("Insert new item")
                action.triggered.connect(self._on_context_insert)
            if factory.deletable:
                action = self.header_menu.addAction("Delete item")
                action.triggered.connect(self._on_context_remove)
        if factory.reorderable:
            if factory.editable and (insertable or factory.deletable):
                self.header_menu.addSeparator()
            self.header_menu_up = self.header_menu.addAction("Move item up")
            self.header_menu_up.triggered.connect(self._on_context_move_up)
            self.header_menu_down = self.header_menu.addAction(
                "Move item down")
            self.header_menu_down.triggered.connect(self._on_context_move_down)

        # Create the empty space context menu and connect its signals
        self.empty_menu = QtGui.QMenu(self.table_view)
        action = self.empty_menu.addAction("Add new item")
        action.triggered.connect(self._on_context_append)

        # When sorting is enabled, the first column is initially displayed with
        # the triangle indicating it is the sort index, even though no sorting
        # has actually been done. Sort here for UI/model consistency.
        if self.factory.sortable and not self.factory.reorderable:
            self.model.sort(0, QtCore.Qt.AscendingOrder)

        # Connect to the mode specific selection handler and select the first
        # row/column/cell. Do this before creating the edit_view to make sure
        # that it has a valid item to use when constructing its view.
        smodel = self.table_view.selectionModel()
        mode_slot = getattr(self, "_on_%s_selection" % factory.selection_mode)
        smodel.selectionChanged.connect(mode_slot)
        self.table_view.setCurrentIndex(self.model.index(0, 0))

        # Create the toolbar if necessary
        if factory.show_toolbar and len(factory.filters) > 0:
            main_view = QtGui.QWidget()
            layout = QtGui.QVBoxLayout(main_view)
            layout.setContentsMargins(0, 0, 0, 0)
            self.toolbar_ui = self.edit_traits(
                parent=parent,
                kind="subpanel",
                view=View(
                    Group(
                        Item("filter{View}", editor=factory._filter_editor),
                        Item("filter_summary{Results}", style="readonly"),
                        spring,
                        orientation="horizontal",
                    ),
                    resizable=True,
                ),
            )
            self.toolbar_ui.parent = self.ui
            layout.addWidget(self.toolbar_ui.control)
            layout.addWidget(self.table_view)
        else:
            main_view = self.table_view

        # Create auxiliary editor and encompassing splitter if necessary
        mode = factory.selection_mode
        if (factory.edit_view == " ") or mode not in {"row", "rows"}:
            self.control = main_view
        else:
            if factory.orientation == "horizontal":
                self.control = QtGui.QSplitter(QtCore.Qt.Horizontal)
            else:
                self.control = QtGui.QSplitter(QtCore.Qt.Vertical)
            self.control.setSizePolicy(QtGui.QSizePolicy.Expanding,
                                       QtGui.QSizePolicy.Expanding)
            self.control.addWidget(main_view)
            self.control.setStretchFactor(0, 2)

            # Create the row editor below the table view
            editor = InstanceEditor(view=factory.edit_view, kind="subpanel")
            self._ui = self.edit_traits(
                parent=self.control,
                kind="subpanel",
                view=View(
                    Item(
                        "selected_row",
                        style="custom",
                        editor=editor,
                        show_label=False,
                        resizable=True,
                        width=factory.edit_view_width,
                        height=factory.edit_view_height,
                    ),
                    resizable=True,
                    handler=factory.edit_view_handler,
                ),
            )
            self._ui.parent = self.ui
            self.control.addWidget(self._ui.control)
            self.control.setStretchFactor(1, 1)

        # Connect to the click and double click handlers
        self.table_view.clicked.connect(self._on_click)
        self.table_view.doubleClicked.connect(self._on_dclick)

        # Make sure we listen for 'items' changes as well as complete list
        # replacements
        self.context_object.on_trait_change(self.update_editor,
                                            self.extended_name + "_items",
                                            dispatch="ui")

        # Listen for changes to traits on the objects in the list
        self.context_object.on_trait_change(self.refresh_editor,
                                            self.extended_name + ".-",
                                            dispatch="ui")

        # Listen for changes on column definitions
        self.on_trait_change(self._update_columns, "columns", dispatch="ui")
        self.on_trait_change(self._update_columns,
                             "columns_items",
                             dispatch="ui")

        # Set up the required externally synchronized traits
        is_list = mode in ("rows", "columns", "cells")
        self.sync_value(factory.click, "click", "to")
        self.sync_value(factory.dclick, "dclick", "to")
        self.sync_value(factory.columns_name, "columns", is_list=True)
        self.sync_value(factory.selected, "selected", is_list=is_list)
        self.sync_value(factory.selected_indices,
                        "selected_indices",
                        is_list=is_list)
        self.sync_value(factory.filter_name, "filter", "from")
        self.sync_value(factory.filtered_indices, "filtered_indices", "to")
        self.sync_value(factory.update_filter_name, "update_filter", "from")

        self.auto_size = self.factory.auto_size

        # Initialize the ItemDelegates for each column
        self._update_columns()
from traits.api import HasTraits, Code, Instance, Button, Str, Float, List, on_trait_change
from traitsui.api import (View, Item, VGroup, VSplit, HSplit, HGroup,
                          ValueEditor, TableEditor, InstanceEditor,
                          ObjectColumn)
from matplotlib.figure import Figure
from scpy2.traits import MPLFigureEditor


###1###
class Point(HasTraits):
    x = Float()
    y = Float()


point_table_editor = TableEditor(columns=[
    ObjectColumn(name='x', width=100, format="%g"),
    ObjectColumn(name='y', width=100, format="%g")
],
                                 editable=True,
                                 sortable=False,
                                 sort_model=False,
                                 auto_size=False,
                                 row_factory=Point)


###1###
###2###
class FunctionPlotter(HasTraits):
    figure = Instance(Figure, ())  #❶
    code = Code()  #❷
    points = List(Instance(Point), [])  #❸
Ejemplo n.º 28
0
from ibvpy.core.i_bcond import IBCond
from traits.api import \
    Instance,  \
    List
from traitsui.api import \
    TableEditor, ObjectColumn
from view.ui import BMCSTreeNode

# The definition of the demo TableEditor:
bcond_list_editor = TableEditor(
    columns=[
        ObjectColumn(label='Type', name='var'),
        ObjectColumn(label='Value', name='value'),
        ObjectColumn(label='DOF', name='dof')
    ],
    editable=False,
    selected='object.selected_bcond',
)


class BCondMngr(BMCSTreeNode):

    node_name = 'boundary conditions'

    bcond_list = List(IBCond)

    def _tree_node_list_default(self):
        return self.bcond_list

    selected_bcond = Instance(IBCond)
Ejemplo n.º 29
0
                 "btn_cfg_tx",
                 show_label=False,
                 tooltip="Configure Tx AMI parameters.",
                 enabled_when="tx_ami_valid == True",
             ),
         ),
     ),
     label="IBIS-AMI",
     show_border=True,
 ),
 VGroup(
     Item(
         name="tx_taps",
         editor=TableEditor(
             columns=[
                 ObjectColumn(name="name", editable=False),
                 ObjectColumn(name="enabled",
                              style="simple"),
                 ObjectColumn(
                     name="min_val",
                     horizontal_alignment="center"),
                 ObjectColumn(
                     name="max_val",
                     horizontal_alignment="center"),
                 ObjectColumn(
                     name="value",
                     format="%+05.3f",
                     horizontal_alignment="center"),
                 ObjectColumn(
                     name="steps",
                     horizontal_alignment="center"),
Ejemplo n.º 30
0
             ),
         ),
         VGroup(
             Item(name='tx_use_ami',      label='Use AMI',      tooltip="You must select both files, first.",
                 enabled_when='tx_ami_valid == True and tx_dll_valid == True'),
             Item(name='tx_use_getwave',  label='Use GetWave',  tooltip="Use the model's GetWave() function.",
                 enabled_when='tx_use_ami and tx_has_getwave'),
             Item('btn_cfg_tx',  show_label=False, tooltip="Configure Tx AMI parameters.",
                 enabled_when='tx_ami_valid == True'),
         ),
     ),
     label='IBIS-AMI', show_border=True,
 ),
 VGroup(
     Item(   name='tx_taps',
             editor=TableEditor(columns=[ObjectColumn(name='name', editable=False),
                                         ObjectColumn(name='enabled', style='simple'),
                                         ObjectColumn(name='min_val', horizontal_alignment='center'),
                                         ObjectColumn(name='max_val', horizontal_alignment='center'),
                                         ObjectColumn(name='value', format='%+05.3f', horizontal_alignment='center'),
                                         ObjectColumn(name='steps', horizontal_alignment='center'),
                                        ],
                                 configurable=False,
                                 reorderable=False,
                                 sortable=False,
                                 selection_mode='cell',
                                 auto_size=True,
                                 rows=4,
                                 # v_size_policy='ignored',
                                 # h_size_policy='minimum',
                                 # orientation='vertical',