def __init__(self, data_collection, suggested_links=None, parent=None): super(LinkEditorWidget, self).__init__(parent=parent) self._data_collection = data_collection self.state = LinkEditorState(data_collection, suggested_links=suggested_links) self._ui = load_ui('link_editor_widget.ui', self, directory=os.path.dirname(__file__)) autoconnect_callbacks_to_qt(self.state, self._ui) self._ui.graph_widget.set_data_collection(data_collection, new_links=self.state.links) self._ui.graph_widget.selection_changed.connect(self._on_data_change_graph) self._menu = LinkMenu(parent=self._ui.button_add_link) self._menu.triggered.connect(self._add_link) self._ui.button_add_link.setMenu(self._menu) self.state.add_callback('data1', self._on_data_change) self.state.add_callback('data2', self._on_data_change) self._on_data_change() self.state.add_callback('data1', self._on_data_change_always) self.state.add_callback('data2', self._on_data_change_always) self._on_data_change_always() self.state.add_callback('current_link', self._on_current_link_change) self._on_current_link_change()
def __init__(self, layer_artist): super(VolumeLayerStyleWidget, self).__init__() self.ui = load_ui('layer_style_widget.ui', self, directory=os.path.dirname(__file__)) self.state = layer_artist.state if self.state.subset_mode == 'outline': self.ui.radio_subset_outline.setChecked(True) else: self.ui.radio_subset_data.setChecked(True) self.layer_artist = layer_artist self.layer = layer_artist.layer # autoconnect needs to come after setting up the component IDs connect_kwargs = {'value_alpha': dict(value_range=(0., 1.))} autoconnect_callbacks_to_qt(self.state, self.ui, connect_kwargs) # Set up radio buttons for subset mode selection if this is a subset if isinstance(self.layer, Subset): self._radio_size = QtWidgets.QButtonGroup() self._radio_size.addButton(self.ui.radio_subset_outline) self._radio_size.addButton(self.ui.radio_subset_data) self.ui.radio_subset_outline.toggled.connect(self._update_subset_mode) self.ui.radio_subset_data.toggled.connect(self._update_subset_mode) self.ui.valuetext_vmin.setEnabled(False) else: self.ui.radio_subset_outline.hide() self.ui.radio_subset_data.hide() self.ui.label_subset_mode.hide()
def __init__(self, layer_artist): super(WWTLayerStyleEditor, self).__init__() self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) fix_tab_widget_fontsize(self.ui.tab_widget) self.state = layer_artist.state self.layer_artist = layer_artist self.layer = layer_artist.layer connect_kwargs = {'value_alpha': dict(value_range=(0., 1.)), 'value_size_scaling': dict(value_range=(0.1, 10), log=True)} autoconnect_callbacks_to_qt(self.state, self.ui, connect_kwargs) # Set initial values self._update_size_mode() self._update_color_mode() self.state.add_callback('color_mode', self._update_color_mode) self.state.add_callback('size_mode', self._update_size_mode) self.ui.button_center.clicked.connect(layer_artist.center) self._viewer_state = layer_artist._viewer_state self._viewer_state.add_callback('mode', self._on_mode_changed)
def __init__(self, viewer_state=None, session=None): super(TutorialViewerStateWidget, self).__init__() self.ui = load_ui('viewer_state.ui', self, directory=os.path.dirname(__file__)) self.viewer_state = viewer_state autoconnect_callbacks_to_qt(self.viewer_state, self.ui)
def __init__(self, viewer_state, session, parent=None): super(ScatterOptionsWidget, self).__init__(parent=parent) self.ui = load_ui('options_widget.ui', self, directory=os.path.dirname(__file__)) autoconnect_callbacks_to_qt(viewer_state, self.ui) self.viewer_state = viewer_state
def __init__(self, layer, parent=None): super(HistogramLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'alpha': dict(value_range=(0, 1))} autoconnect_callbacks_to_qt(layer.state, self.ui, connect_kwargs)
def __init__(self, layer_artist): super(SpecvizLayerStateWidget, self).__init__() self.ui = load_ui('layer_state.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'alpha': dict(value_range=(0, 1))} autoconnect_callbacks_to_qt(layer_artist.state, self.ui, connect_kwargs)
def __init__(self, viewer_state, session, parent=None): super(HistogramOptionsWidget, self).__init__(parent=parent) self.ui = load_ui('options_widget.ui', self, directory=os.path.dirname(__file__)) fix_tab_widget_fontsize(self.ui.tab_widget) autoconnect_callbacks_to_qt(viewer_state, self.ui) self.viewer_state = viewer_state viewer_state.add_callback('x_att', self._update_attribute)
def __init__(self, layer, parent=None): super(ProfileLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'alpha': dict(value_range=(0, 1))} autoconnect_callbacks_to_qt(layer.state, self.ui, connect_kwargs) self.viewer_state = layer.state.viewer_state self.viewer_state.add_callback('normalize', self._on_normalize_change) self._on_normalize_change()
def __init__(self, layer_artist): super(IsosurfaceLayerStyleWidget, self).__init__() self.ui = load_ui('layer_style_widget.ui', self, directory=os.path.dirname(__file__)) self.state = layer_artist.state self.layer_artist = layer_artist self.layer = layer_artist.layer connect_kwargs = {'value_alpha': dict(value_range=(0., 1.)), 'value_step': dict(value_range=(1, 10))} autoconnect_callbacks_to_qt(self.state, self.ui, connect_kwargs)
def __init__(self, parent=None, viewer_state=None): super(VispyOptionsWidget, self).__init__(parent=parent) self._data_collection = self.parent()._data self.ui = load_ui('viewer_options.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'value_x_stretch': dict(value_range=(0.1, 10), log=True), 'value_y_stretch': dict(value_range=(0.1, 10), log=True), 'value_z_stretch': dict(value_range=(0.1, 10), log=True), 'valuetext_x_stretch': dict(fmt='{:6.2f}'), 'valuetext_y_stretch': dict(fmt='{:6.2f}'), 'valuetext_z_stretch': dict(fmt='{:6.2f}')} autoconnect_callbacks_to_qt(viewer_state, self.ui, connect_kwargs)
def __init__(self, layer, parent=None): super(ScatterLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'alpha': dict(value_range=(0, 1)), 'size_scaling': dict(value_range=(0.1, 10), log=True), 'density_contrast': dict(value_range=(0, 1)), 'vector_scaling': dict(value_range=(0.1, 10), log=True)} autoconnect_callbacks_to_qt(layer.state, self.ui, connect_kwargs) connect_value(layer.state.viewer_state, 'dpi', self.ui.value_dpi, value_range=(12, 144), log=True) fix_tab_widget_fontsize(self.ui.tab_widget) self.layer_state = layer.state self.layer_state.add_callback('markers_visible', self._update_markers_visible) self.layer_state.add_callback('line_visible', self._update_line_visible) self.layer_state.add_callback('xerr_visible', self._update_xerr_visible) self.layer_state.add_callback('yerr_visible', self._update_yerr_visible) self.layer_state.add_callback('vector_visible', self._update_vectors_visible) self.layer_state.add_callback('cmap_mode', self._update_cmap_mode) self.layer_state.add_callback('size_mode', self._update_size_mode) self.layer_state.add_callback('vector_mode', self._update_vector_mode) self.layer_state.add_callback('density_map', self._update_size_mode) self.layer_state.add_callback('density_map', self._update_warnings) self.layer_state.add_callback('layer', self._update_warnings) self._update_markers_visible() self._update_line_visible() self._update_xerr_visible() self._update_yerr_visible() self._update_vectors_visible() self._update_size_mode() self._update_vector_mode() self._update_cmap_mode() self._update_warnings()
def __init__(self, viewer_state=None, session=None): super(BaseCustomOptionsWidget, self).__init__() layout = QGridLayout() for row, (name, (prefix, viewer_cls)) in enumerate(self._widgets.items()): widget = viewer_cls() setattr(self, prefix + name, widget) layout.addWidget(QLabel(name.capitalize()), row, 0) layout.addWidget(widget, row, 1) if len(self._widgets) > 0: layout.setRowStretch(row + 1, 10) self.setLayout(layout) self.viewer_state = viewer_state self.session = session autoconnect_callbacks_to_qt(self.viewer_state, self)
def __init__(self, layer, parent=None): super(ImageLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = {'alpha': dict(value_range=(0, 1)), 'contrast': dict(value_range=(0.1, 10), log=True), 'bias': dict(value_range=(1.5, -0.5))} autoconnect_callbacks_to_qt(layer.state, self.ui, connect_kwargs) layer._viewer_state.add_callback('color_mode', self._update_color_mode) self._update_color_mode(layer._viewer_state.color_mode) self.ui.bool_global_sync.setToolTip('Whether to sync the color and transparency with other viewers')
def __init__(self, viewer_state, session, parent=None): super(ProfileOptionsWidget, self).__init__(parent=parent) self.ui = load_ui('options_widget.ui', self, directory=os.path.dirname(__file__)) fix_tab_widget_fontsize(self.ui.tab_widget) autoconnect_callbacks_to_qt(viewer_state, self.ui) autoconnect_callbacks_to_qt(viewer_state, self.ui.axes_editor.ui) self.viewer_state = viewer_state self.session = session self.viewer_state.add_callback('x_att', self._on_attribute_change) self.ui.text_warning.hide()
def __init__(self, viewer_state, session, parent=None): super(ScatterOptionsWidget, self).__init__(parent=parent) self.ui = load_ui('options_widget.ui', self, directory=os.path.dirname(__file__)) fix_tab_widget_fontsize(self.ui.tab_widget) autoconnect_callbacks_to_qt(viewer_state, self.ui) autoconnect_callbacks_to_qt(viewer_state, self.ui.axes_editor.ui) self.viewer_state = viewer_state viewer_state.add_callback('x_att', self._update_x_attribute) viewer_state.add_callback('y_att', self._update_y_attribute) self.session = session self.ui.axes_editor.button_apply_all.clicked.connect(self._apply_all_viewers)
def __init__(self, viewer_state, session, parent=None): super(ImageOptionsWidget, self).__init__(parent=parent) self.ui = load_ui('options_widget.ui', self, directory=os.path.dirname(__file__)) self.ui.combodata_aspect.addItem("Square Pixels", userData='equal') self.ui.combodata_aspect.addItem("Automatic", userData='auto') self.ui.combodata_aspect.setCurrentIndex(0) self.ui.combotext_color_mode.addItem("Colormaps") self.ui.combotext_color_mode.addItem("One color per layer") autoconnect_callbacks_to_qt(viewer_state, self.ui) self.viewer_state = viewer_state self.slice_helper = MultiSliceWidgetHelper(viewer_state=self.viewer_state, layout=self.ui.layout_slices)
def __init__(self, data_collection=None, parent=None): super(SaveDataDialog, self).__init__(parent=parent) self.state = SaveDataState(data_collection=data_collection) self.ui = load_ui('save_data.ui', parent=self, directory=os.path.dirname(__file__)) autoconnect_callbacks_to_qt(self.state, self.ui) self.ui.button_cancel.clicked.connect(self.reject) self.ui.button_ok.clicked.connect(self.accept) self.ui.button_select_none.clicked.connect(self.select_none) self.ui.button_select_all.clicked.connect(self.select_all) self.ui.list_component.itemChanged.connect(self._on_check_change) self.state.add_callback('component', self._on_data_change) self._on_data_change()
def __init__(self, layer_artist): super(ScatterLayerStyleWidget, self).__init__() self.ui = load_ui('layer_style_widget.ui', self, directory=os.path.dirname(__file__)) self.state = layer_artist.state self.layer_artist = layer_artist self.layer = layer_artist.layer connect_kwargs = {'value_alpha': dict(value_range=(0., 1.)), 'value_size_scaling': dict(value_range=(0.1, 10), log=True)} autoconnect_callbacks_to_qt(self.state, self.ui, connect_kwargs) # Set initial values self._update_size_mode() self._update_color_mode() self.state.add_callback('color_mode', nonpartial(self._update_color_mode)) self.state.add_callback('size_mode', nonpartial(self._update_size_mode))
def __init__(self, layer, parent=None): super(GenericLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) self.layer_state = layer.state self.sub_editors = QtWidgets.QStackedLayout() self.ui.placeholder.setLayout(self.sub_editors) self.editors = OrderedDict() self.editors['Scatter'] = ScatterLayerStyleEditor(layer) self.editors['Line'] = LineLayerStyleEditor(layer) for name, widget in self.editors.items(): self.sub_editors.addWidget(widget) connect_kwargs = {'alpha': dict(value_range=(0, 1)), 'size_scaling': dict(value_range=(0.1, 10), log=True)} autoconnect_callbacks_to_qt(layer.state, self.ui, connect_kwargs) self.layer_state.add_callback('style', self._style_changed)
def __init__(self, parent=None, data=None): QtWidgets.QDialog.__init__(self, parent=parent) self.data = data self.ui = load_ui('loader_selection.ui', self, directory=UI_DIR) LoaderSelectionDialog.loader_spectrum1d.set_choices( self, sorted(SPECTRUM1D_LOADERS)) LoaderSelectionDialog.loader_spectrum2d.set_choices( self, sorted(SPECTRUM2D_LOADERS)) LoaderSelectionDialog.loader_cutout.set_choices( self, sorted(CUTOUT_LOADERS)) if 'loaders' in data.meta: loaders = data.meta['loaders'] if "spectrum1d" in loaders and loaders[ 'spectrum1d'] in SPECTRUM1D_LOADERS: self.loader_spectrum1d = loaders['spectrum1d'] if "spectrum2d" in loaders and loaders[ 'spectrum2d'] in SPECTRUM2D_LOADERS: self.loader_spectrum2d = loaders['spectrum2d'] if "cutout" in loaders and loaders['cutout'] in CUTOUT_LOADERS: self.loader_cutout = loaders['cutout'] if self.loader_spectrum1d is None: self.loader_spectrum1d = 'NIRSpec 1D Spectrum' if self.loader_spectrum2d is None: self.loader_spectrum2d = 'NIRSpec 2D Spectrum' if self.loader_cutout is None: self.loader_cutout = 'NIRCam Image' # We set up ComponentIDComboHelper which takes care of populating the # combo box with the components. self._helpers = {} for column in self.columns: helper = ComponentIDComboHelper(self, column['property'], data=data, numeric=column['numeric'], categorical=column['categorical']) self._helpers[column['property']] = helper # Store components that appear in the combo inside the column object column['components'] = dict((x.label, x) for x in getattr( LoaderSelectionDialog, column['property']).get_choices(self)) # We check whether any of the properties are already defined in the # Data.meta dictionary. This could happen for example if the user has # encoded some of these defaults in their data file (which we # document how to do). if 'special_columns' in data.meta: special_columns = data.meta['special_columns'] for column in self.columns: if column['property'] in special_columns: column_name = special_columns[column['property']] if column_name in column['components']: setattr(self, column['property'], column['components'][column_name]) # We now check whether each property is not None, and if so we set it either # to the default, if present, or to the first component otherwise. In # future we could replace the default by a function that could do more # sophisticated auto-testing. for column in self.columns: if not column['components']: continue if getattr(self, column['property']) is not None: if column['default'] in column['components']: setattr(self, column['property'], column['components'][column['default']]) else: setattr(self, column['property'], sorted(column['components'])[0]) # The following is a call to a function that deals with setting up the # linking between the callback properties here and the Qt widgets. autoconnect_callbacks_to_qt(self, self.ui) self.button_cancel.clicked.connect(self.reject) self.button_ok.clicked.connect(self.accept) self.add_global_callback(self._validation_checks) self._validation_checks()
def __init__(self, label='', world=None, lo=0, hi=10, parent=None, world_unit=None, world_warning=False): super(SliceWidget, self).__init__(parent) self.state = SliceState() self.state.label = label self.state.slice_center = (lo + hi) // 2 self._world = np.asarray(world) self._world_warning = world_warning self._world_unit = world_unit self.ui = load_ui('data_slice_widget.ui', self, directory=os.path.dirname(__file__)) autoconnect_callbacks_to_qt(self.state, self.ui) font = self.text_warning.font() font.setPointSize(font.pointSize() * 0.75) self.text_warning.setFont(font) self.button_first.setStyleSheet('border: 0px') self.button_first.setIcon(get_icon('playback_first')) self.button_prev.setStyleSheet('border: 0px') self.button_prev.setIcon(get_icon('playback_prev')) self.button_back.setStyleSheet('border: 0px') self.button_back.setIcon(get_icon('playback_back')) self.button_stop.setStyleSheet('border: 0px') self.button_stop.setIcon(get_icon('playback_stop')) self.button_forw.setStyleSheet('border: 0px') self.button_forw.setIcon(get_icon('playback_forw')) self.button_next.setStyleSheet('border: 0px') self.button_next.setIcon(get_icon('playback_next')) self.button_last.setStyleSheet('border: 0px') self.button_last.setIcon(get_icon('playback_last')) self.value_slice_center.setMinimum(lo) self.value_slice_center.setMaximum(hi) self.value_slice_center.valueChanged.connect(nonpartial(self.set_label_from_slider)) # Figure out the optimal format to use to show the world values. We do # this by figuring out the precision needed so that when converted to # a string, every string value is different. if world is not None and len(world) > 1: self.label_fmt = format_minimal(world)[0] else: self.label_fmt = "{:g}" self.text_slider_label.setMinimumWidth(80) self.state.slider_label = self.label_fmt.format(self.value_slice_center.value()) self.text_slider_label.editingFinished.connect(nonpartial(self.set_slider_from_label)) self._play_timer = QtCore.QTimer() self._play_timer.setInterval(500) self._play_timer.timeout.connect(nonpartial(self._play_slice)) self.button_first.clicked.connect(nonpartial(self._browse_slice, 'first')) self.button_prev.clicked.connect(nonpartial(self._browse_slice, 'prev')) self.button_back.clicked.connect(nonpartial(self._adjust_play, 'back')) self.button_stop.clicked.connect(nonpartial(self._adjust_play, 'stop')) self.button_forw.clicked.connect(nonpartial(self._adjust_play, 'forw')) self.button_next.clicked.connect(nonpartial(self._browse_slice, 'next')) self.button_last.clicked.connect(nonpartial(self._browse_slice, 'last')) self.bool_use_world.toggled.connect(nonpartial(self.set_label_from_slider)) if world is None: self.state.use_world = False self.bool_use_world.hide() else: self.state.use_world = not world_warning if world_unit: self.state.slider_unit = world_unit else: self.state.slider_unit = '' self._play_speed = 0 self.set_label_from_slider()
def __init__(self, label='', world=None, lo=0, hi=10, parent=None, world_unit=None, world_warning=False): super(SliceWidget, self).__init__(parent) self.state = SliceState() self.state.label = label self.state.slice_center = (lo + hi) // 2 self._world = np.asarray(world) self._world_warning = world_warning self._world_unit = world_unit self.ui = load_ui('data_slice_widget.ui', self, directory=os.path.dirname(__file__)) self._connections = autoconnect_callbacks_to_qt(self.state, self.ui) font = self.text_warning.font() font.setPointSize(font.pointSize() * 0.75) self.text_warning.setFont(font) self.button_first.setStyleSheet('border: 0px') self.button_first.setIcon(get_icon('playback_first')) self.button_prev.setStyleSheet('border: 0px') self.button_prev.setIcon(get_icon('playback_prev')) self.button_back.setStyleSheet('border: 0px') self.button_back.setIcon(get_icon('playback_back')) self.button_stop.setStyleSheet('border: 0px') self.button_stop.setIcon(get_icon('playback_stop')) self.button_forw.setStyleSheet('border: 0px') self.button_forw.setIcon(get_icon('playback_forw')) self.button_next.setStyleSheet('border: 0px') self.button_next.setIcon(get_icon('playback_next')) self.button_last.setStyleSheet('border: 0px') self.button_last.setIcon(get_icon('playback_last')) self.value_slice_center.setMinimum(lo) self.value_slice_center.setMaximum(hi) self.value_slice_center.valueChanged.connect( nonpartial(self.set_label_from_slider)) # Figure out the optimal format to use to show the world values. We do # this by figuring out the precision needed so that when converted to # a string, every string value is different. if world is not None and len(world) > 1: self.label_fmt = format_minimal(world)[0] else: self.label_fmt = "{:g}" self.text_slider_label.setMinimumWidth(80) self.state.slider_label = self.label_fmt.format( self.value_slice_center.value()) self.text_slider_label.editingFinished.connect( nonpartial(self.set_slider_from_label)) self._play_timer = QtCore.QTimer() self._play_timer.setInterval(500) self._play_timer.timeout.connect(nonpartial(self._play_slice)) self.button_first.clicked.connect( nonpartial(self._browse_slice, 'first')) self.button_prev.clicked.connect(nonpartial(self._browse_slice, 'prev')) self.button_back.clicked.connect(nonpartial(self._adjust_play, 'back')) self.button_stop.clicked.connect(nonpartial(self._adjust_play, 'stop')) self.button_forw.clicked.connect(nonpartial(self._adjust_play, 'forw')) self.button_next.clicked.connect(nonpartial(self._browse_slice, 'next')) self.button_last.clicked.connect(nonpartial(self._browse_slice, 'last')) self.bool_use_world.toggled.connect( nonpartial(self.set_label_from_slider)) if world is None: self.state.use_world = False self.bool_use_world.hide() else: self.state.use_world = not world_warning if world_unit: self.state.slider_unit = world_unit else: self.state.slider_unit = '' self._play_speed = 0 self.set_label_from_slider()
def __init__(self, label='', world=None, lo=0, hi=10, parent=None, world_unit=None, world_warning=False): super(SliceWidget, self).__init__(parent) self.state = SliceState() self.state.label = label self.state.slice_center = (lo + hi) // 2 self._world = np.asarray(world) self._world_warning = world_warning self._world_unit = world_unit self.ui = load_ui('data_slice_widget.ui', self, directory=os.path.dirname(__file__)) autoconnect_callbacks_to_qt(self.state, self.ui) font = self.text_warning.font() font.setPointSize(font.pointSize() * 0.75) self.text_warning.setFont(font) self.button_first.setStyleSheet('border: 0px') self.button_first.setIcon(get_icon('playback_first')) self.button_prev.setStyleSheet('border: 0px') self.button_prev.setIcon(get_icon('playback_prev')) self.button_back.setStyleSheet('border: 0px') self.button_back.setIcon(get_icon('playback_back')) self.button_stop.setStyleSheet('border: 0px') self.button_stop.setIcon(get_icon('playback_stop')) self.button_forw.setStyleSheet('border: 0px') self.button_forw.setIcon(get_icon('playback_forw')) self.button_next.setStyleSheet('border: 0px') self.button_next.setIcon(get_icon('playback_next')) self.button_last.setStyleSheet('border: 0px') self.button_last.setIcon(get_icon('playback_last')) self.value_slice_center.setMinimum(lo) self.value_slice_center.setMaximum(hi) self.value_slice_center.valueChanged.connect( nonpartial(self.set_label_from_slider)) self.text_slider_label.setMinimumWidth(80) self.state.slider_label = str(self.value_slice_center.value()) self.text_slider_label.editingFinished.connect( nonpartial(self.set_slider_from_label)) self._play_timer = QtCore.QTimer() self._play_timer.setInterval(500) self._play_timer.timeout.connect(nonpartial(self._play_slice)) self.button_first.clicked.connect( nonpartial(self._browse_slice, 'first')) self.button_prev.clicked.connect(nonpartial(self._browse_slice, 'prev')) self.button_back.clicked.connect(nonpartial(self._adjust_play, 'back')) self.button_stop.clicked.connect(nonpartial(self._adjust_play, 'stop')) self.button_forw.clicked.connect(nonpartial(self._adjust_play, 'forw')) self.button_next.clicked.connect(nonpartial(self._browse_slice, 'next')) self.button_last.clicked.connect(nonpartial(self._browse_slice, 'last')) self.bool_use_world.toggled.connect( nonpartial(self.set_label_from_slider)) if world is None: self.state.use_world = False self.bool_use_world.hide() else: self.state.use_world = not world_warning if world_unit: self.state.slider_unit = world_unit else: self.state.slider_unit = '' self._play_speed = 0 self.set_label_from_slider()
def __init__(self, layer, parent=None): super(ScatterLayerStyleEditor, self).__init__(parent=parent) self.ui = load_ui('layer_style_editor.ui', self, directory=os.path.dirname(__file__)) connect_kwargs = { 'alpha': dict(value_range=(0, 1)), 'size_scaling': dict(value_range=(0.1, 10), log=True), 'density_contrast': dict(value_range=(0, 1)), 'vector_scaling': dict(value_range=(0.1, 10), log=True) } self._connections = autoconnect_callbacks_to_qt( layer.state, self.ui, connect_kwargs) self._connection_dpi = connect_value(layer.state.viewer_state, 'dpi', self.ui.value_dpi, value_range=(12, 144), log=True) fix_tab_widget_fontsize(self.ui.tab_widget) self.layer_state = layer.state self.layer_state.add_callback('markers_visible', self._update_markers_visible) self.layer_state.add_callback('line_visible', self._update_line_visible) self.layer_state.add_callback('xerr_visible', self._update_xerr_visible) self.layer_state.add_callback('yerr_visible', self._update_yerr_visible) self.layer_state.add_callback('vector_visible', self._update_vectors_visible) self.layer_state.add_callback('cmap_mode', self._update_cmap_mode) self.layer_state.add_callback('size_mode', self._update_size_mode) self.layer_state.add_callback('vector_mode', self._update_vector_mode) self.layer_state.add_callback('density_map', self._update_size_mode) self.layer_state.add_callback('density_map', self._update_warnings) self.layer_state.add_callback('density_map', self._update_checkboxes) self.layer_state.add_callback('layer', self._update_warnings) self._update_markers_visible() self._update_line_visible() self._update_xerr_visible() self._update_yerr_visible() self._update_vectors_visible() self._update_size_mode() self._update_vector_mode() self._update_cmap_mode() self._update_checkboxes() self._update_warnings()