def traits_view(self): grps = [] for at, name in ( ('blank_unknowns', 'Blank Unknowns'), ('airs', 'Airs'), ): grp = VGroup(Item('{}_enabled'.format(at), label='Enabled'), Item('{}_table_enabled'.format(at), label='Table'), UItem('{}_series_options_controller'.format(at), style='custom', enabled_when='{}_enabled'.format(at), editor=InstanceEditor(view=view(name))), label=name) grps.append(grp) sog = UItem('cocktails_series_options_controller', style='custom', enabled_when='cocktails_enabled', editor=InstanceEditor(view=view(name)), label='Series') iog = UItem('cocktails_ideogram_options_controller', style='custom', enabled_when='cocktails_enabled', editor=InstanceEditor(view=view(name)), label='Ideogram') cocktail_grp = VGroup(Item('cocktails_enabled', label='Enabled'), Item('cocktails_table_enabled', label='Table'), Tabbed(sog, iog), label='Cocktails') grps.append(cocktail_grp) sog = UItem('unknowns_series_options_controller', style='custom', enabled_when='unknowns_enabled', editor=InstanceEditor(view=view(name)), label='Series') iog = UItem('unknowns_ideogram_options_controller', style='custom', enabled_when='unknowns_enabled', editor=InstanceEditor(view=view(name)), label='Ideogram') unk_grp = VGroup(Item('unknowns_enabled', label='Enabled'), Item('unknowns_table_enabled', label='Table'), Tabbed(sog, iog), label='Unknowns') grps.append(unk_grp) layout_grp = self._get_layout_group() grps.append(layout_grp) v = okcancel_view(Tabbed(*grps), title='Configure Report') return v
def traits_view(self): required_grp = VGroup(Item('sample_type', label='Sample Type'), Item('name', label='Name'), Item('material', label='Material'), label='Required', show_border=True) collection_grp = VGroup(Item('collector', label='Collection'), Item('collection_method', label='Collection Method'), HGroup(Item('_collection_start_date', label='Collection Start Date'), UItem('_collection_start_time'), UItem('timezone')), label='Collection') location_grp = VGroup(Item('latitude', label='Latitude', tooltip=LAT_TT), Item('longitude', label='Longitude', tooltip=LONG_TT), Item('elevation', label='Elevation', tooltip=ELEVATION_TT), Item('primary_location_name', label='Primary Location Name'), Item('country', label='Country'), Item('province', label='State/Province'), Item('county', label='County'), label='Location') age_grp = VGroup(Item('age_min', label='Age Min'), Item('age_max', label='Age Max'), Item('age_unit', label='Age Units'), label='Age') optional_grp = VGroup(VGroup(UItem('description', style='custom', height=-100), label='Description', show_border=True), Item('original_archive', label='Original Archive'), Tabbed(collection_grp, location_grp, age_grp), show_border=True, label='Optional') classification_grp = VGroup(Item('rock_type', label='Rock Type'), Item('sub_rock_type', enabled_when='sub_rock_types', editor=EnumEditor(name='sub_rock_types'), label='Sub Rock Type'), Item('rock_type_detail', enabled_when='rock_type_details', label='Rock Type Detail', editor=EnumEditor(name='rock_type_details')), show_border=True, label='Classification') v = View(Tabbed(VGroup(Item('user_code', label='SESAR User Code', style='readonly'), required_grp, classification_grp, optional_grp, label='New Sample'), VGroup(UItem('xml_content', style='custom', editor=TextEditor(read_only=True)), label='XML')), title='New IGSN', resizable=True, buttons=['OK', 'Cancel']) return v
class App(ModelView): """Main application class.""" #: The main model, the root of the hierarchy. model = Instance(nodes.Ontology) #: The associated view. selected_cuds = Instance(nodes.CUDSItem) selected_cuba = Instance(nodes.CUBADataType) #: Presenter for the selected CUDSItem selected_cuds_model_view = Instance(CUDSItemModelView) selected_cuba_model_view = Instance(CUBADataTypeModelView) #: The view traits_view = View( Tabbed( HGroup( Item( 'object.model.root_cuds_item', editor=cuds_editor, resizable=True, show_label=False, ), UItem("selected_cuds_model_view"), label="CUDS Items" ), HGroup( Item( 'model', editor=cuba_editor, resizable=True, show_label=False, ), UItem("selected_cuba_model_view"), label="CUBA Data Types", ) ), title='Simphony Metadata', resizable=True, style='custom', width=1.0, height=1.0 ) @on_trait_change("selected_cuds") def _update_selected_cuds_model_view(self, value): """ Syncs the selected_cuds_model_view with the newly selected selected_cuds """ self.selected_cuds_model_view = CUDSItemModelView(model=value) @on_trait_change("selected_cuba") def _update_selected_cuba_model_view(self, value): """ Syncs the selected_cuba_model_view with the newly selected selected_cuba """ self.selected_cuba_model_view = CUBADataTypeModelView(model=value)
def maker_view(self): v = View(HGroup( self.maker_group(), Tabbed(UItem('graph', style='custom'), UItem('amplitude_graph', style='custom'))), resizable=True) return v
class ListTraitTest(HasStrictTraits): # Trait definitions: people = List(Instance(Person, ())) # Traits view definitions: traits_view = View( Tabbed( Item('people', label='Table', id='table', editor=table_editor), Item( 'people', label='List', id='list', style='custom', editor=ListEditor(style='custom', rows=5), ), Item( 'people', label='Notebook', id='notebook', style='custom', editor=ListEditor( use_notebook=True, deletable=True, export='DockShellWindow', page_name='.name', ), ), id='splitter', show_labels=False, ), id='traitsui.demo.Traits UI Demo.Advanced.List_editors_demo', dock='horizontal', width=600, )
def default_traits_view(self): if self.standalone: std_buttons = OKCancelButtons else: std_buttons = [CancelButton] view = KromView( VGroup( make_window_title_group(title="User Preferences", include_blank_spaces=False), Item("instructions", style="readonly", resizable=True, show_label=False), Tabbed( Item("ui_prefs_view", editor=InstanceEditor(), style="custom", label="Interface", show_label=False), Item("file_pref_view", editor=InstanceEditor(), style="custom", label="File loading", show_label=False), Item("app_pref_view", editor=InstanceEditor(), style="custom", # even though the group's label is not shown in the # UI, it needs to be set to set the tab name: label="Application", show_label=False), Item("solver_prefs_view", editor=InstanceEditor(), style="custom", label="Solver", show_label=False), ), ), buttons=[save_button, factory_reset_button] + std_buttons, handler=RevealChromatographyPreferenceViewHandler(), default_button=save_button, width=700, title="Edit Reveal Chromatography Preferences", ) return view
def new_readout_view(rv): rv.start() from traitsui.api import UItem, VGroup, Item, HGroup, View, TableEditor, Tabbed from traitsui.table_column import ObjectColumn from pychron.processing.analyses.view.magnitude_editor import MagnitudeColumn cols = [ ObjectColumn(name='name', label='Name'), ObjectColumn(name='value', format='%0.3f', label='Value'), MagnitudeColumn(name='value', label='', width=200), ] dcols = [ ObjectColumn(name='name', label='Name', width=100), ObjectColumn(name='value', label='Value', width=100) ] a = HGroup(Item('refresh_period', label='Period (s)')) b = VGroup(UItem('readouts', editor=TableEditor(columns=cols, editable=False)), label='General') c = VGroup(UItem('deflections', editor=TableEditor(columns=dcols, sortable=False, editable=False)), label='Deflections') v = View(VGroup(a, Tabbed(b, c)), handler=ReadoutHandler(), title='Spectrometer Readout', width=500, resizable=True) return v
def traits_view(self): main_grp = VGroup(HGroup(Item('bind_fontsizes'), Item('global_fontsize', enabled_when='bind_fontsizes')), Item('main_extraction_fontsize', enabled_when='not bind_fontsizes'), Item('main_measurement_fontsize', enabled_when='not bind_fontsizes'), Item('main_computed_fontsize', enabled_when='not bind_fontsizes')) main_view = VGroup(main_grp, UItem('isotope_table_configurer', style='custom'), HGroup(Item('show_intermediate', label='Show Intermediate Table')), UItem('intermediate_table_configurer', style='custom', enabled_when='show_intermediate'), label='Main') experiment_view = VGroup(Item('experiment_fontsize', label='Size'), show_border=True, label='Experiment') measurement_view = VGroup(Item('measurement_fontsize', label='Size'), show_border=True, label='Measurement') extraction_view = VGroup(Item('extraction_fontsize', label='Size'), show_border=True, label='Extraction') v = View(Tabbed(main_view, VGroup(experiment_view, measurement_view, extraction_view, label='Scripts')), buttons=['OK', 'Cancel', 'Revert'], kind='livemodal', title='Configure Table', handler=TableConfigurerHandler, resizable=True, width=300) return v
def default_traits_view(self): v = View(VGroup( Item('headstage_flavor', label='HS Type'), Item('file_dir', label='Data directory'), Tabbed( UItem('working_files', editor=SetEditor(name='_available_hdf5_files', left_column_title='Available files', right_column_title='Files to process', ordered=True)), UItem('filters', style='custom')), HGroup( VGroup( HGroup(UItem('batch_proc'), UItem('join')), HGroup(UItem('batch_with_handoff'), Label('Filter with level matching')), ), spring, Item('file_suffix', label='File suffix'), spring, Item('file_size', label='Estimated file size', style='readonly')), HGroup(UItem('downsample'), Item('ds_rate', label='Downsample factor'), Item('set_Fs', label='Fs for set', style='readonly')), ), handler=FilesHandler, title='Batch processing tool', resizable=True) return v
def default_traits_view(self): view = View( VGroup( Item('model.name'), Item('model.description', editor=TextEditor(auto_set=True, enter_set=True), style="custom"), Tabbed(VGroup(Item('transport_model_view', editor=InstanceEditor(), style="custom", show_label=False), label="Transport Model"), VGroup(Item('binding_model_view', editor=InstanceEditor(), style="custom", show_label=False), label="Binding Model"), springy=True), HGroup( Item('model.run_status', style="readonly"), Spring(), Item('show_advanced_parameters', show_label=False), ), ), resizable=True, ) return view
class ExtensionPointRefs(ObjectAdapter): #--------------------------------------------------------------------------- # Trait definitions: #--------------------------------------------------------------------------- # The name of the module containing the Extension Point instances: module_name = Str # The list of extension points derived from this ExtensionPoint class: refs = List #--------------------------------------------------------------------------- # Traits view definitions: #--------------------------------------------------------------------------- view = View(Tabbed(VGroup(VGroup(Item('module_name~'), label='Description', show_border=True), VGroup(Item('file_name~'), label='Implementation', show_border=True), label='Definition', dock='tab'), VGroup(Item('file_name~'), VGroup(Item('source~', show_label=False)), label='Source Code', dock='tab'), id='tabbed'), id='etsdevtools.developer.tools.envisage_browser.' 'application_adapter.ExtensionPointRefs', title='Extension Point Definition', resizable=True, buttons=NoButtons)
def maker_group(self): para_grp = Group(self.get_parameter_group(), show_border=True, label='Parameters') pattern_grp = VGroup(HGroup( Item('disable_at_end', label='Disable at End', tooltip='Disable Laser at end of patterning'), Item('niterations', label='N. Iterations')), HGroup( Item('velocity'), Item('calculated_transit_time', label='Time (s)', style='readonly', format_str='%0.1f')), label='XY Pattern', show_border=True) display_grp = Group(Item('target_radius'), Item('show_overlap'), Item('beam_radius', enabled_when='show_overlap'), show_border=True, label='Display') z_grp = self._get_amplitude_group('z', 'Z') power_grp = self._get_amplitude_group('power', 'Power') return Tabbed( VGroup(Item('xy_pattern_enabled'), para_grp, pattern_grp, display_grp, label='Pattern'), z_grp, power_grp)
def traits_view(self): view = self.view_klass( HSplit( VGroup( Tabbed( Item("_scrollable_column_names", style="custom", editor=InstanceEditor(), show_label=False, label="Column Names"), *self._included_col_scroll_list), HGroup(Item('click_type', style='custom', show_label=False), Spring(), label="When clicking a button...", show_border=True)), VGroup(Item("expr", style="custom", show_label=False, width=450), show_border=True)), resizable=True, buttons=OKCancelButtons, title="Edit the filter...", statusbar=StatusItem(name="status_bar_message"), ) return view
def _groups(self): igrp = Group(self._items_grp(), label='Commits') tgrp = VGroup(UItem('tags', editor=TabularEditor(adapter=TagAdapter(), editable=False, selected='selected')), label='Tags') return [self._info_grp(), Tabbed(tgrp, igrp)]
def default_traits_view(self): view = View( VGroup( Tabbed( UItem('foo', style='readonly'), UItem('bar', style='readonly'), UItem('baz', style='readonly'), ), UItem('advance'))) return view
class ExtensionPointFileRefs(ObjectAdapter): #--------------------------------------------------------------------------- # Trait definitions: #--------------------------------------------------------------------------- # The name of the extension point class: name = Str # The dictionary of ( file_name, extension points list ) pairs of all # extensions derived from this ExtensionPoint class: refs = Dict # List of ExtensionPointRefs derived from 'refs': file_refs = Property(List) #--------------------------------------------------------------------------- # Traits view definitions: #--------------------------------------------------------------------------- view = View(Tabbed(VGroup(VGroup(Item('name~', label='Class Name'), label='Description', show_border=True), VGroup(Item('file_name~'), label='Implementation', show_border=True), label='Definition', dock='tab'), VGroup(Item('file_name~'), VGroup(Item('source~', show_label=False)), label='Source Code', dock='tab'), id='tabbed'), id='etsdevtools.developer.tools.envisage_browser.' 'application_adapter.ExtensionPointFileRefs', title='Extension Point in File Definition', resizable=True, buttons=NoButtons) #-- Property Implementations --------------------------------------------------- def _get_file_refs(self): if self._file_refs is None: application = self.application refs = [ ExtensionPointRefs(module_name=module_name, refs=refs[0], file_name=refs[1], application=application) for module_name, refs in self.refs.items() ] refs.sort(lambda l, r: cmp(l.module_name, r.module_name)) self._file_refs = refs return self._file_refs
class _time_windows_creation_view(HasTraits): starting_list = List(Int) t_width = List(Int(50)) trait_view = View(Tabbed(Item('starting_list', height=150, width=80), Item('t_width', label='Win width in samples', height=150, width=80)))
def traits_view(self): ideogram_grp = VGroup(UItem('ideogram_graph', visible_when='ideogram_visible', editor=ComponentEditor()), label='Ideogram') stats_grp = VGroup( UItem('analysis_groups', editor=TabularEditor(adapter=AnalysisGroupAdapter())), label='Stats') v = View(Tabbed(stats_grp, ideogram_grp)) return v
def _get_view_elements(self): elemens = [ Tabbed( VGroup( VGroup( Item('title_style', editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="Title style", ), VGroup(*self.specific_view_elements, show_border=True, label=SPECIFIC_CONFIG_CONTROL_LABEL, visible_when="len(specific_view_elements) > 0"), show_border=True, label="General controls", ), VGroup(VGroup(Item("x_axis_style", editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="X-axis controls"), VGroup(Item("y_axis_style", editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="Y-axis controls"), VGroup(Item("second_y_axis_style", editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="Secondary Y-axis controls", visible_when="_second_y_axis_present"), show_border=True, label="Axis controls"), VGroup(Item("renderer_style_manager", editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="Renderer controls"), VGroup(Item("container_style", editor=InstanceEditor(), style="custom", show_label=False), show_border=True, label="Container controls")) ] return elemens
def traits_view(self): path_group = self._get_path_group() options_group = VGroup(UItem( 'pdf_options', style='custom', editor=InstanceEditor(view=PDFLayoutView)), label='Layout') v = okcancel_view(Tabbed(path_group, options_group), title='Save PDF Dialog', width=700) return v
def traits_view(self): path_group = self._get_path_group() options_group = VGroup(UItem('pdf_options', style='custom', editor=InstanceEditor(view=PDFLayoutView)), label='Layout') v = View(Tabbed(path_group, options_group), buttons=['OK', 'Cancel'], title='Save PDF Dialog', width=700, kind='livemodal') return v
def traits_view(self): path_grp = self._get_path_group(show_border=True) view_grp = VGroup(Item('show_grid'), Item('show_outline'), show_border=True, label='Appearance') opt_grp = VGroup(view_grp, Item('include_weighted_mean'), label='Options') v = okcancel_view(Tabbed( VGroup(UItem('extension', label='Output Mode'), path_grp), opt_grp), title='Save Interpreted Age Table') return v
def _get_edit_view(self): main = VGroup(HGroup( Item('name', editor=EnumEditor(name='names')), Item('fit', editor=EnumEditor(values=FIT_TYPES)), UItem('error_type', editor=EnumEditor(values=FIT_ERROR_TYPES))), label='Fits') goodness = VGroup( Item('goodness_threshold', label='Intercept', tooltip='If % error is greater than "Goodness Threshold" ' 'mark regression as "Bad"'), HGroup( Item( 'slope_goodness', label='Slope', tooltip='If slope of regression is positive and the isotope ' 'intensity is greater than "Slope Goodness Intensity" ' 'then mark regression as "Bad"'), Item('slope_goodness_intensity', label='Intensity')), Item( 'outlier_goodness', label='Outlier', tooltip= 'If more than "Outlier Goodness" points are identified as outliers' 'then mark regression as "Bad"'), HGroup(Item('curvature_goodness', label='Curvature'), Item('curvature_goodness_at', label='Curvature At')), HGroup(Item('rsquared_goodness', label='R-Squared Adj')), HGroup( Item( 'signal_to_blank_goodness', tooltip= 'If Blank/Signal*100 greater than threshold mark regression as "Bad"' )), label='Goodness') auto = VGroup(VGroup(Item('n_threshold', label='Threshold'), Item('n_true', label='N>=', tooltip='Fit when ncounts > Threshold'), Item('n_false', label='N<', tooltip='Fit when ncounts < Threshold'), label='N'), label='Auto', enabled_when='fit=="Auto"') v = View(Tabbed(main, goodness, auto)) return v
class TabbedPlots(HasTraits): data = Instance(AbstractPlotData) plot_sin = Instance(Plot) plot_tan = Instance(Plot) plot_mixed = Instance(Plot) view = View( VGroup( # UItem is an unlabeled item UItem('plot_sin', editor=ComponentEditor(), dock='tab'), Tabbed(UItem('plot_tan', editor=ComponentEditor(), dock='tab'), UItem('plot_mixed', editor=ComponentEditor(), dock='tab'))), title='Tabbed plots with shared data ranges', width=0.67, height=0.4, resizable=True) def create_plot(self, data, name, color): p = Plot(self.data) p.plot(data, name=name, color=color) p.tools.append(PanTool(p)) p.overlays.append(ZoomTool(p)) return p def create_plots(self): self.plot_sin = self.create_plot(("x", "ysin"), "sin plot", "red") self.plot_tan = self.create_plot(("x", "ytan"), "tan plot", "blue") self.plot_mixed = self.create_plot(("x", "ymix"), "mixed plot", "green") # The mixed plot will share both x and y ranges with the sin plot. # This 2d range is a single object shared by both plots. For its # initial value, we will use the range of the mixed plot, whose y-range # is auto-set to slightly larger than that of the sin plot. self.plot_sin.range2d = self.plot_mixed.range2d # The sin & mixed plots will share only their x range with the tan plot. # Again, this x-axis range is a single object shared by all 3 plots. # It is contained within the 2d range shared by the sin and mixed plots. # (The independent variable, in this case x, is called "index" in chaco. # The dependent variable is called "value".) self.plot_tan.index_range = self.plot_sin.index_range def _data_changed(self): self.create_plots()
def traits_view(self): all_sim_names = [sim.name for sim in self.target_study.simulations] start_point_sim_editor = EnumEditor(values=all_sim_names) possible_cp = self.target_study.simulations[0] view = KromView( Label("Select an optimizer type and a (set of) experiment(s) to " "optimize against. \nUpdate the list of product components " "if only certain peaks should be compared."), HGroup(Item("optimizer_name"), Spring(), Item('optimizer_type'), Spring(), Item("cost_function_name", label="Cost function")), HGroup( Item("experiment_selector", editor=InstanceEditor(), style="custom", show_label=False), Item("component_selector", editor=InstanceEditor(), style="custom", show_label=False), ), HGroup( Item("starting_point_simulation_name", editor=start_point_sim_editor, label="Starting point simulation", tooltip="Simulation to build optimizer simulations from," " in addition to the target experiment."), Item("initial_buffer_name", label="Override initial buffer with", tooltip="Buffer the resin was in before the first " "simulated step. Leave blank to infer from target" " experiment."), ), Tabbed(*build_2step_view_items(possible_cp), visible_when=OPTIM_2STEP_TYPE), VGroup(*build_general_optim_view_items(possible_cp), visible_when=OPTIM_GRID_TYPE, show_border=True, label="Scanned Parameters"), handler=OptimizerBuilderHandler(), buttons=[CancelButton, CreateButton], default_button=CreateButton, title="Configure Optimizer", resizable=True) return view
def traits_view(self): layout_grp = self._get_layout_group() layout_grp.show_border = False width_grp = VGroup(Item('status_width', label='Status (in)'), Item('position_width', label='Pos. (in)'), Item('identifier_width', label='L# (in)'), Item('sample_width', label='Sample (in)'), Item('material_width', label='Material (in)'), Item('project_width', label='Project (in)'), label='Column Widths') main_grp = VGroup(Item('only_selected_level', label='Only Selected Level'), label='Main') v = okcancel_view(Tabbed(main_grp, layout_grp, width_grp), title='PDF Save Options') return v
def traits_view(self): layout_grp = self._get_layout_group() layout_grp.show_border = False width_grp = VGroup(Item('status_width', label='Status (in)'), Item('position_width', label='Pos. (in)'), Item('identifier_width', label='L# (in)'), Item('sample_width', label='Sample (in)'), Item('material_width', label='Material (in)'), Item('project_width', label='Project (in)'), label='Column Widths') v = View(Tabbed(layout_grp, width_grp), kind='livemodal', buttons=['OK', 'Cancel'], title='PDF Save Options', resizable=True) return v
def default_traits_view(self): view = View(Tabbed( VGroup(Item("model.name", label="System Name"), Item("model.system_number", label="System ID"), Item("model.abs_path_length", editor=UnitScalarEditor(), label="Absorbance Detector Path Length"), Item("model.holdup_volume", editor=UnitScalarEditor()), label="System in use"), VGroup(Item("_system_type_view", editor=InstanceEditor(), style="custom", show_label=False, enabled_when="_allow_type_editing"), label="System type"), ), buttons=OKCancelButtons) return view
class SwiftConsole(HasTraits): link = Instance(sbpc.Handler) data_view = Instance(DataView) baseline_view = Instance(BaselineView) summary_view = Instance(SummaryView) utils = Instance(ViewsUtils) view = View( VSplit( Tabbed(Item('data_view', style='custom', label=u'数据采集'), Item('baseline_view', style='custom', label=u'实时'), Item('summary_view', style='custom', label=u'总结'), show_labels=False), ), icon=icon, dock='fixed', resizable=False, width=800, height=600, title=CONSOLE_TITLE, ) def _summary_view_fired(self): self.summary_view.position_threshold = self.baseline_view.position_threshold self.summary_view.depth_threshold = self.baseline_view.depth_threshold self.summary_view.time_threshold = self.baseline_view.time_threshold def __init__(self, link): try: self.link = link self.data_view = DataView() self.baseline_view = BaselineView(self.link) self.summary_view = SummaryView(self.link) self.utils = ViewsUtils(self.data_view, self.baseline_view, self.summary_view) self.data_view.set_utils(self.utils) self.baseline_view.set_utils(self.utils) self.summary_view.set_utils(self.utils) except: import traceback traceback.print_exc()
def traits_view(self): # Build the view such that the SLURM stuff isn't visible if not # available on the machine elements = [ VGroup( Item("object.model.solver_binary_path", label="Cadet executable"), Item("object.model.input_file_location", label="CADET input folder"), Item("object.model.executor_num_worker", editor=spinner_editor, label="Cadet num. workers (requires restart)"), Item("object.model.cadet_num_threads", editor=spinner_editor, label="Cadet num. threads"), Item('object.model.auto_delete_solver_files_on_exit'), ) ] executable = self.model.slurm_binary if check_slurm_installed(executable=executable): elements[0].label = "General" elements.append( VGroup( Item("object.model.use_slurm_scheduler", tooltip="Submit solver run to SLURM scheduler"), Item("object.model.slurm_binary", visible_when="object.model.use_slurm_scheduler", width=300, tooltip="Command to submit SLURM jobs"), Item("object.model.slurm_partition", visible_when="object.model.use_slurm_scheduler", width=300, tooltip="SLURM scheduler partition to submit jobs."), Item("object.model.slurm_job_name", visible_when="object.model.use_slurm_scheduler", width=300, tooltip="SLURM scheduler job name."), label="SLURM scheduler", ) ) elements = [Tabbed(*elements)] return KromView(*elements)