Salome HOME
Integration of CurvePlot tool in GUI.
[modules/gui.git] / tools / CurvePlot / src / python / model / CurveModel.py
1 from Model import Model
2 from utils import toUnicodeWithWarning
3
4 class CurveModel(Model):  
5   def __init__(self, controller, table=None, index=-1):
6     Model.__init__(self, controller)
7     self._title = "Curve %d" % self.getID()
8     self._table = table
9     self._yaxisIndex = index   # column index in the table
10     self._xaxisIndex = 0  # By default the first column of the table is used for the X-s
11     
12   def clone(self):
13     ret = CurveModel(self._controller)
14     ret._title = self._title
15     ret._table = self._table  # TO CHECK: deep copy here? (I think not needed in Python ...)
16     ret._yaxisIndex = self._yaxisIndex
17     ret._xaxisIndex = self._xaxisIndex
18     return ret
19     
20   def setTable(self, t, silent=False):
21     self._table = t
22     if not silent:
23       self.notifyChange("DataChange") 
24     
25   def getTable(self):
26     return self._table
27     
28   def extendData(self, t, silent=False):
29     self._table.extend(t)
30     if not silent:
31       self.notifyChange("DataChange")
32     
33   def resetData(self):
34     self._table.clear()
35     self.notifyChange("DataChange")
36     
37   def setTitle(self, ti, silent=False):
38     ti = toUnicodeWithWarning(ti, "CurveModel::setTitle()")
39     self._title = ti
40     if not silent:
41       self.notifyChange("CurveTitleChange") 
42     
43   def getTitle(self):
44     return self._title
45     
46   def getYAxisIndex(self):
47     return self._yaxisIndex
48   
49   def setYAxisIndex(self, idx, silent=False):
50     self._yaxisIndex = idx
51     if not silent:
52       self.notifyChange("YAxisIndexChange")
53   
54   def getXAxisIndex(self):
55     return self._xaxisIndex
56   
57   def setXAxisIndex(self, idx, silent=False):
58     sh = self._table.getShape()
59     if idx >= sh[1]:
60       raise ValueError("Index out of bound (is %d, but max is %d)" % (idx, sh[1]))
61     self._xaxisIndex = idx
62     if not silent:
63       self.notifyChange("XAxisIndexChange")
64     
65   def getID(self):
66     return self._id
67   
68