Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
79 changes: 78 additions & 1 deletion orangecontrib/spectroscopy/widgets/owspectralseries.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from AnyQt.QtWidgets import QWidget, QPushButton, QGridLayout, QVBoxLayout, QWidgetAction, \
QToolTip

from AnyQt.QtCore import Qt, QRectF
from AnyQt.QtCore import Qt, QRectF, pyqtSignal

from AnyQt.QtCore import pyqtSignal as Signal

Expand All @@ -12,6 +12,7 @@
import numpy as np

from Orange.data import Table, Domain, DiscreteVariable, ContinuousVariable
from Orange.widgets.visualize.utils.customizableplot import CommonParameterSetter
from Orange.widgets.widget import OWWidget, Msg, OWComponent, Input
from Orange.widgets import gui
from Orange.widgets.settings import \
Expand All @@ -28,6 +29,73 @@
SELECTMANY, INDIVIDUAL, InteractiveViewBox, MenuFocus
from orangecontrib.spectroscopy.widgets.utils import \
SelectionGroupMixin, SelectionOutputsMixin
from orangecontrib.spectroscopy.widgets.visual_settings import FloatOrUndefined
from orangewidget.utils.visual_settings_dlg import VisualSettingsDialog


class ParameterSetter(CommonParameterSetter):

VIEW_RANGE_BOX = "View Range"

def __init__(self, master):
super().__init__()
self.master = master

def update_setters(self):
self.initial_settings = {
self.ANNOT_BOX: {
self.TITLE_LABEL: {self.TITLE_LABEL: ("", "")},
self.X_AXIS_LABEL: {self.TITLE_LABEL: ("", "")},
self.Y_AXIS_LABEL: {self.TITLE_LABEL: ("", "")},
},
self.LABELS_BOX: {
self.FONT_FAMILY_LABEL: self.FONT_FAMILY_SETTING,
self.TITLE_LABEL: self.FONT_SETTING,
self.AXIS_TITLE_LABEL: self.FONT_SETTING,
self.AXIS_TICKS_LABEL: self.FONT_SETTING,
self.LEGEND_LABEL: self.FONT_SETTING,
},
self.VIEW_RANGE_BOX: {
"X": {"xMin": (FloatOrUndefined(), None), "xMax": (FloatOrUndefined(), None)},
"Y": {"yMin": (FloatOrUndefined(), None), "yMax": (FloatOrUndefined(), None)}
}
}

def set_limits(**args):
for a, v in args.items():
if a == "xMin":
self.viewbox.fixed_range_x[0] = v
if a == "xMax":
self.viewbox.fixed_range_x[1] = v
if a == "yMin":
self.viewbox.fixed_range_y[0] = v
if a == "yMax":
self.viewbox.fixed_range_y[1] = v
# self.master.update_lock_indicators() # TODO for using InteractiveViewBox
self.viewbox.setRange(self.viewbox.viewRect())

self._setters[self.VIEW_RANGE_BOX] = {"X": set_limits, "Y": set_limits}

@property
def viewbox(self):
return self.master.plot.vb

@property
def title_item(self):
return self.master.plot.titleLabel

@property
def axis_items(self):
return [value["item"] for value in self.master.plot.axes.values()]

@property
def getAxis(self):
return self.master.plot.getAxis

@property
def legend_items(self):
return self.master.legend.items



class LineScanPlot(QWidget, OWComponent, SelectionGroupMixin,
Expand Down Expand Up @@ -120,6 +188,8 @@ def __init__(self, parent):
self.data = None
self.data_ids = {}

self.parameter_setter = ParameterSetter(self)

def init_interface_data(self, data):
self.init_attr_values(data)

Expand Down Expand Up @@ -269,6 +339,7 @@ class Warning(OWWidget.Warning):
settingsHandler = DomainContextHandler()

imageplot = SettingProvider(LineScanPlot)
visual_settings = Setting({}, schema_only=True)

want_control_area = False

Expand All @@ -288,6 +359,8 @@ def __init__(self):

self.resize(900, 700)

VisualSettingsDialog(self, self.imageplot.parameter_setter.initial_settings)

def output_image_selection(self):
self.send_selection(self.data, self.imageplot.selection_group)

Expand Down Expand Up @@ -317,6 +390,10 @@ def migrate_settings(cls, settings, version):
if version < 2:
settings["compat_no_group"] = True

def set_visual_settings(self, key, value):
self.imageplot.parameter_setter.set_parameter(key, value)
self.visual_settings[key] = value


if __name__ == "__main__": # pragma: no cover
from Orange.widgets.utils.widgetpreview import WidgetPreview
Expand Down
Loading