diff --git a/pyAmakIHM/classes/panelLimitedPlotChart.py b/pyAmakIHM/classes/panelLimitedPlotChart.py index d14178d4896e16f24e8d5b9fce37477d5a56ff6f..9cbd3faa6e2a9207efd3ccab6b9223dd55bf05de 100644 --- a/pyAmakIHM/classes/panelLimitedPlotChart.py +++ b/pyAmakIHM/classes/panelLimitedPlotChart.py @@ -3,6 +3,7 @@ Class PanelLimitedPlotChart """ from pyAmakIHM.classes.panelPlotChart import PanelPlotChart +from tkinter import Toplevel class PanelLimitedPlotChart(PanelPlotChart): """ @@ -21,18 +22,42 @@ class PanelLimitedPlotChart(PanelPlotChart): self.__limited = False def addPoint(self, id : int, x : int, y : int): - self.__axis.clear() - self.__xAxis[id].append(x) - self.__yAxis[id].append(y) + self._axis.clear() + self._xAxis[id].append(x) + self._yAxis[id].append(y) if(self.__limited): - del self.__xAxis[0] - del self.__yAxis[0] + del self._xAxis[id][0] + del self._yAxis[id][0] else: - self.__limited = self.isLimited() + self.__limited = self.isLimited(id) - self.__rebuild() + self._rebuild() - def isLimited(self): - return len(self.__xAxis) > self.__limit + def isLimited(self,id): + return len(self._xAxis[id]) > self.__limit + + def createCopy(self, name : str, id : int) -> 'PanelPlotChart': + window = Toplevel() + window.title(name) + + self._copy = PanelLimitedPlotChart(window, id, self.__limit) + self._copy.pack(fill='both',expand='yes') + + self._copyWidget() + + self._copy._rebuild() + + self._copy._copy = self + self._copy._observer = self._observer + + window.protocol("WM_DELETE_WINDOW", self._copy.on_closing) + window.geometry("+900+0") + + return self._copy + + def _copyWidget(self): + super()._copyWidget() + self._copy.__limit = self.__limit + self._copy.__limited = self.__limited diff --git a/pyAmakIHM/classes/panelPlotChart.py b/pyAmakIHM/classes/panelPlotChart.py index 3a5e72b36b1e42e2ebba9d4b6135ce881a6469d0..c97fc3ce491b156254a16c1c06e527c8e6a6d0c8 100644 --- a/pyAmakIHM/classes/panelPlotChart.py +++ b/pyAmakIHM/classes/panelPlotChart.py @@ -22,11 +22,11 @@ class PanelPlotChart(Frame): self.__root = root self.__fig = Figure() - self.__axis = self.__fig.add_subplot() - self.__xAxis = [[]] - self.__yAxis = [[]] + self._axis = self.__fig.add_subplot() + self._xAxis = [[]] + self._yAxis = [[]] - self.__axis.plot(self.__xAxis,self.__yAxis) + self._axis.plot(self._xAxis,self._yAxis) self.__graphique = FigureCanvasTkAgg(self.__fig,master = self) self.__graphique.get_tk_widget().pack(fill='both',expand='yes') @@ -38,59 +38,59 @@ class PanelPlotChart(Frame): self.__id = id - self.__copy = None - self.__observer = None + self._copy = None + self._observer = None """ Attach a observer to the object """ def attach(self, obs : 'Fenetre') -> None: - self.__observer = obs + self._observer = obs """ Notify the observer about an event """ def notify(self, panel : 'PanelBarChart', id : int) -> None: - self.__observer.updateGraphique(panel,id) + self._observer.updateGraphique(panel,id) """ Set the drawing policy for the curve identified by idCurve """ def setPolicy(self, idCurve : int, policy : str) -> None: - self.__axis.clear() + self._axis.clear() self.__policy[idCurve] = policy - self.__rebuild() + self._rebuild() """ Set the title to the chart """ def setTitle(self, name : str) -> None: - self.__axis.clear() + self._axis.clear() self.__title = name - self.__rebuild() + self._rebuild() """ Set the label on the x axis to the chart """ def setXLabel(self, name : str) -> None: - self.__axis.clear() + self._axis.clear() self.__XLabel = name - self.__rebuild() + self._rebuild() """ Set the label on the y axis to the chart """ def setYLabel(self, name : str) -> None: - self.__axis.clear() + self._axis.clear() self.__YLabel = name - self.__rebuild() + self._rebuild() """ Add a curve to the plot with the given policy """ def addCurve(self, policy : str) -> None: - self.__xAxis.append([]) - self.__yAxis.append([]) + self._xAxis.append([]) + self._yAxis.append([]) self.__policy.append(policy) @@ -98,22 +98,22 @@ class PanelPlotChart(Frame): Add a point to the id curve with x,y coords """ def addPoint(self, id : int, x : int, y : int): - self.__axis.clear() - self.__xAxis[id].append(x) - self.__yAxis[id].append(y) + self._axis.clear() + self._xAxis[id].append(x) + self._yAxis[id].append(y) - self.__rebuild() + self._rebuild() """ Rebuild the figure after any modification """ - def __rebuild(self) -> None: - for i in range (len(self.__xAxis)): - self.__axis.plot(self.__xAxis[i],self.__yAxis[i],self.__policy[i]) + def _rebuild(self) -> None: + for i in range (len(self._xAxis)): + self._axis.plot(self._xAxis[i],self._yAxis[i],self.__policy[i]) - self.__axis.title.set_text(self.__title) - self.__axis.set_xlabel(self.__XLabel) - self.__axis.set_ylabel(self.__YLabel) + self._axis.title.set_text(self.__title) + self._axis.set_xlabel(self.__XLabel) + self._axis.set_ylabel(self.__YLabel) self.__graphique.draw() """ @@ -123,38 +123,38 @@ class PanelPlotChart(Frame): window = Toplevel() window.title(name) - self.__copy = PanelPlotChart(window, id) - self.__copy.pack(fill='both',expand='yes') + self._copy = PanelPlotChart(window, id) + self._copy.pack(fill='both',expand='yes') - self.__copyWidget() + self._copyWidget() - self.__copy.__rebuild() + self._copy._rebuild() - self.__copy.__copy = self - self.__copy.__observer = self.__observer + self._copy._copy = self + self._copy._observer = self._observer - window.protocol("WM_DELETE_WINDOW", self.__copy.on_closing) + window.protocol("WM_DELETE_WINDOW", self._copy.on_closing) window.geometry("+900+0") - return self.__copy + return self._copy """ Copy the object """ - def __copyWidget(self) -> None: - self.__copy.__id = self.__id - self.__copy.__policy = self.__policy - self.__copy.__xAxis = self.__xAxis - self.__copy.__yAxis = self.__yAxis - self.__copy.__title = self.__title - self.__copy.__XLabel = self.__XLabel - self.__copy.__YLabel = self.__YLabel + def _copyWidget(self) -> None: + self._copy.__id = self.__id + self._copy.__policy = self.__policy + self._copy._xAxis = self._xAxis + self._copy._yAxis = self._yAxis + self._copy.__title = self.__title + self._copy.__XLabel = self.__XLabel + self._copy.__YLabel = self.__YLabel """ Send the original object to the main window when the window is closing """ def on_closing(self) -> None: - self.__copyWidget() - self.__copy.__rebuild() + self._copyWidget() + self._copy._rebuild() self.__root.destroy() - self.notify(self.__copy, self.__copy.__id) + self.notify(self._copy, self._copy.__id)