Salome HOME
Merge remote-tracking branch 'origin/master' into V9_dev
[modules/gui.git] / tools / CurvePlot / src / python / model / XYPlotSetModel.py
1 from Model import Model
2 from utils import toUnicodeWithWarning
3
4 class XYPlotSetModel(Model):
5   
6   def __init__(self, controller):
7     Model.__init__(self, controller)
8     self._title = "Plot set %d" % self.getID()
9     self._curves = {}  # Key: model ID, value: CurveModel
10     self._currentCurve = None
11     self._xlabel = ""
12     self._ylabel = ""
13     
14   def eraseAll(self):
15     self._curves = {}
16     self._currentCurve = None
17     self.notifyChange("ClearAll")
18     
19   def setTitle(self, title, silent=False):
20     title = toUnicodeWithWarning(title, "XYPlotSetModel::setTitle()")
21     self._title = title
22     if not silent:
23       self.notifyChange("TitleChange")
24       
25   def getTitle(self):
26     return self._title
27       
28   def setCurrentCurve(self, curveID, silent=False):
29     if curveID not in self._curves and curveID != -1:
30       raise ValueError("Invalid curve ID (%d)!" % curveID)
31     self._currentCurve = self._curves.get(curveID, None)
32     if not silent:
33       self.notifyChange("CurrentCurveChange") 
34
35   def getCurrentCurve(self):
36     return self._currentCurve
37       
38   def addCurve(self, curve, silent=False):
39     self._curves[curve.getID()] = curve
40     if not silent:
41       self.notifyChange("AddCurve")
42   
43   def removeCurve(self, curveID, silent=False):
44     if curveID not in self._curves:
45       raise ValueError("Curve ID (%d) not found for deletion!" % curveID)
46     c = self._curves.pop(curveID)
47     if self._currentCurve is c:
48       self._currentCurve = None
49     if not silent:
50       self.notifyChange("RemoveCurve")
51     
52   def setXLabel(self, x_label, silent=False):
53     x_label = toUnicodeWithWarning(x_label, "XYPlotSetModel::setXLabel()")
54     self._xlabel = x_label
55     if not silent:
56       self.notifyChange("XLabelChange")
57   
58   def setYLabel(self, y_label, silent=False):
59     y_label = toUnicodeWithWarning(y_label, "XYPlotSetModel::setYLabel()")
60     self._ylabel = y_label
61     if not silent:
62       self.notifyChange("YLabelChange")
63