Changes in / [b94889a:040529d] in sasview


Ignore:
Location:
src/sas/qtgui
Files:
3 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • src/sas/qtgui/DataExplorer.py

    ref01be4 r8548d739  
    410410                raise AttributeError, msg 
    411411 
     412 
    412413        if plots and \ 
    413414           hasattr(new_plot, 'data') and \ 
     
    764765        data = GuiUtils.dataFromItem(model_item) 
    765766 
    766         method_name = 'Plotter' 
    767         if isinstance(data, Data2D): 
    768             method_name='Plotter2D' 
     767        dimension = 1 if isinstance(data, Data1D) else 2 
    769768 
    770769        # TODO: Replace this with the proper MaskPlotPanel from plottools 
    771         new_plot = globals()[method_name](self, quickplot=True) 
    772         new_plot.data = data 
     770        new_plot = Plotter(self) 
     771        new_plot.data(data) 
    773772        new_plot.plot(marker='o', linestyle='') 
    774773 
  • src/sas/qtgui/PlotHelper.py

    • Property mode changed from 100644 to 100755
    ref01be4 r8cb6cd6  
    2828    Deletes an existing plot from the dictionary 
    2929    """ 
    30     if plot_id in this._plots: 
    31         del this._plots[plot_id] 
     30    assert plot_id in this._plots 
     31    del this._plots[plot_id] 
    3232 
    3333def currentPlots(): 
     
    4141    Returns the plot referenced by the ID 
    4242    """ 
    43     return this._plots[plot_id] if plot_id in this._plots else None 
     43    assert plot_id in this._plots 
     44 
     45    return this._plots[plot_id] 
    4446 
    4547def idOfPlot(plot): 
  • src/sas/qtgui/Plotter.py

    ref01be4 r31c5b58  
    1010from matplotlib.backends.backend_qt4agg import NavigationToolbar2QT as NavigationToolbar 
    1111import matplotlib.pyplot as plt 
    12 import matplotlib as mpl 
    1312 
    1413import sas.qtgui.PlotHelper as PlotHelper 
    15 from sas.qtgui.PlotterBase import PlotterBase 
    1614 
    17 class Plotter(PlotterBase): 
    18     def __init__(self, parent=None, quickplot=False): 
    19         super(Plotter, self).__init__(parent, quickplot=quickplot) 
     15class Plotter(QtGui.QDialog): 
     16    def __init__(self, parent=None): 
     17        super(Plotter, self).__init__(parent) 
     18 
     19        # Required for the communicator 
     20        self.parent = parent 
     21 
     22        # a figure instance to plot on 
     23        self.figure = plt.figure() 
     24 
     25        # this is the Canvas Widget that displays the `figure` 
     26        # it takes the `figure` instance as a parameter to __init__ 
     27        self.canvas = FigureCanvas(self.figure) 
     28 
     29        # this is the Navigation widget 
     30        # it takes the Canvas widget and a parent 
     31        self.toolbar = NavigationToolbar(self.canvas, self) 
     32 
     33        # set the layout 
     34        layout = QtGui.QVBoxLayout() 
     35        layout.addWidget(self.canvas) 
     36        layout.addWidget(self.toolbar) 
     37        self.setLayout(layout) 
     38 
     39        # defaults 
     40        self._current_plot = 111 
     41        self._data = [] 
     42        self._title = "Plot" 
     43        self._id = "" 
     44        self._xlabel = "X" 
     45        self._ylabel = "Y" 
     46        self._ax = self.figure.add_subplot(self._current_plot) 
     47 
     48        # Notify the helper 
     49        PlotHelper.addPlot(self) 
     50        # Notify the listeners 
     51        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
    2052 
    2153    @property 
    2254    def data(self): 
     55        """ data getter """ 
    2356        return self._data 
    2457 
     
    2760        """ data setter """ 
    2861        self._data = value 
    29         self.label=value.name 
    30         self.xLabel(xlabel="%s(%s)"%(value._xaxis, value._xunit)) 
    31         self.yLabel(ylabel="%s(%s)"%(value._yaxis, value._yunit)) 
    32         self.title(title=value.title) 
     62 
     63    def title(self, title=""): 
     64        """ title setter """ 
     65        self._title = title 
     66 
     67    def id(self, id=""): 
     68        """ id setter """ 
     69        self._id = id 
     70 
     71    def x_label(self, xlabel=""): 
     72        """ x-label setter """ 
     73        self._xlabel = xlabel 
     74 
     75    def y_label(self, ylabel=""): 
     76        """ y-label setter """ 
     77        self._ylabel = ylabel 
     78 
     79    def clean(self): 
     80        """ 
     81        Redraw the graph 
     82        """ 
     83        self.figure.delaxes(self._ax) 
     84        self._ax = self.figure.add_subplot(self._current_plot) 
    3385 
    3486    def plot(self, marker=None, linestyle=None): 
     
    3789        """ 
    3890        # create an axis 
    39         ax = self.ax 
     91        ax = self._ax 
    4092 
    4193        if marker == None: 
     
    4698 
    4799        # plot data with legend 
    48         ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self.title) 
     100        ax.plot(self._data.x, self._data.y, marker=marker, linestyle=linestyle, label=self._title) 
    49101 
    50102        # Now add the legend with some customizations. 
    51         legend = ax.legend(loc='upper right', shadow=True) 
     103        legend = ax.legend(loc='lower left', shadow=True) 
    52104 
    53         ax.set_ylabel(self.y_label) 
    54         ax.set_xlabel(self.x_label) 
    55         # Title only for regular charts 
    56         if not self.quickplot: 
    57             ax.set_title(label=self.title) 
     105        ax.set_ylabel(self._ylabel) 
     106        ax.set_xlabel(self._xlabel) 
    58107 
    59108        ax.set_yscale('log') 
     
    63112        self.canvas.draw() 
    64113 
     114    def closeEvent(self, event): 
     115        """ 
     116        Overwrite the close event adding helper notification 
     117        """ 
     118        # Please remove me from your database. 
     119        PlotHelper.deletePlot(PlotHelper.idOfPlot(self)) 
     120        # Notify the listeners 
     121        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
     122        event.accept() 
     123 
  • src/sas/qtgui/Plotter2D.py

    ref01be4 r31c5b58  
    1818import sas.qtgui.PlotUtilities as PlotUtilities 
    1919import sas.qtgui.PlotHelper as PlotHelper 
    20 from sas.qtgui.PlotterBase import PlotterBase 
    2120 
    22 class Plotter2D(PlotterBase): 
    23     def __init__(self, parent=None, quickplot=False): 
    24         super(Plotter2D, self).__init__(parent, quickplot=quickplot) 
     21class Plotter2D(QtGui.QDialog): 
     22    def __init__(self, parent=None): 
     23        super(Plotter2D, self).__init__(parent) 
     24 
     25        # Required for the communicator 
     26        self.parent = parent 
     27 
     28        # a figure instance to plot on 
     29        self.figure = plt.figure() 
     30 
     31        # this is the Canvas Widget that displays the `figure` 
     32        # it takes the `figure` instance as a parameter to __init__ 
     33        self.canvas = FigureCanvas(self.figure) 
     34 
     35        # this is the Navigation widget 
     36        # it takes the Canvas widget and a parent 
     37        self.toolbar = NavigationToolbar(self.canvas, self) 
     38 
     39        # set the layout 
     40        layout = QtGui.QVBoxLayout() 
     41        layout.addWidget(self.canvas) 
     42        layout.addWidget(self.toolbar) 
     43        self.setLayout(layout) 
     44 
     45        # defaults 
     46        self._current_plot = 111 
     47        self._data = [] 
     48        self._qx_data = [] 
     49        self._qy_data = [] 
     50        self._color=0 
     51        self._symbol=0 
     52        self._scale = 'linear' 
     53 
     54        # default color map 
     55        self._cmap = DEFAULT_CMAP 
     56 
     57        self._ax = self.figure.add_subplot(self._current_plot) 
     58 
     59        # Notify the helper 
     60        PlotHelper.addPlot(self) 
     61        # Notify the listeners 
     62        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
    2563 
    2664    @property 
     
    3270        """ data setter """ 
    3371        self._data = data 
    34         self.qx_data=data.qx_data 
    35         self.qy_data=data.qy_data 
    36         self.xmin=data.xmin 
    37         self.xmax=data.xmax 
    38         self.ymin=data.ymin 
    39         self.ymax=data.ymax 
    40         self.zmin=data.zmin 
    41         self.zmax=data.zmax 
    42         self.label=data.name 
    43         self.xLabel(xlabel="%s(%s)"%(data._xaxis, data._xunit)) 
    44         self.yLabel(ylabel="%s(%s)"%(data._yaxis, data._yunit)) 
     72        self._qx_data=data.qx_data 
     73        self._qy_data=data.qy_data 
     74        self._xmin=data.xmin 
     75        self._xmax=data.xmax 
     76        self._ymin=data.ymin 
     77        self._ymax=data.ymax 
     78        self._zmin=data.zmin 
     79        self._zmax=data.zmax 
     80        self._label=data.name 
     81        self.x_label(xlabel=data._xaxis + data._xunit) 
     82        self.y_label(ylabel=data._yaxis + data._yunit) 
    4583        self.title(title=data.title) 
     84 
     85    def title(self, title=""): 
     86        """ title setter """ 
     87        self._title = title 
     88 
     89    def id(self, id=""): 
     90        """ id setter """ 
     91        self._id = id 
     92 
     93    def x_label(self, xlabel=""): 
     94        """ x-label setter """ 
     95        self._xlabel = r'$%s$'% xlabel 
     96 
     97    def y_label(self, ylabel=""): 
     98        """ y-label setter """ 
     99        self._ylabel = r'$%s$'% ylabel 
     100 
     101    def clean(self): 
     102        """ 
     103        Redraw the graph 
     104        """ 
     105        self.figure.delaxes(self._ax) 
     106        self._ax = self.figure.add_subplot(self._current_plot) 
    46107 
    47108    def plot(self, marker=None, linestyle=None): 
     
    49110        Plot 2D self._data 
    50111        """ 
    51         # create an axis object 
    52         ax = self.ax 
     112        # create an axis 
     113        ax = self._ax 
    53114 
    54115        # graph properties 
    55         ax.set_xlabel(self.x_label) 
    56         ax.set_ylabel(self.y_label) 
    57         # Title only for regular charts 
    58         if not self.quickplot: 
    59             ax.set_title(label=self.title) 
     116        ax.set_xlabel(self._xlabel) 
     117        ax.set_ylabel(self._ylabel) 
     118        ax.set_title(label=self._title) 
    60119 
    61120        # Re-adjust colorbar 
    62         self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
     121        # self.figure.subplots_adjust(left=0.2, right=.8, bottom=.2) 
    63122 
    64         output = PlotUtilities.build_matrix(self._data.data, self.qx_data, self.qy_data) 
     123        output = PlotUtilities.build_matrix(self._data.data, self._qx_data, self._qy_data) 
    65124 
    66125        im = ax.imshow(output, 
    67126                       interpolation='nearest', 
    68127                       origin='lower', 
    69                        vmin=self.zmin, vmax=self.zmax, 
    70                        cmap=self.cmap, 
    71                        extent=(self.xmin, self.xmax, 
    72                                self.ymin, self.ymax)) 
     128                       vmin=self._zmin, vmax=self._zmax, 
     129                       cmap=self._cmap, 
     130                       extent=(self._xmin, self._xmax, 
     131                               self._ymin, self._ymax)) 
    73132 
    74133        cbax = self.figure.add_axes([0.84, 0.2, 0.02, 0.7]) 
     
    79138        # Schedule the draw for the next time the event loop is idle. 
    80139        self.canvas.draw_idle() 
     140 
     141    def closeEvent(self, event): 
     142        """ 
     143        Overwrite the close event adding helper notification 
     144        """ 
     145        # Please remove me from your database. 
     146        PlotHelper.deletePlot(PlotHelper.idOfPlot(self)) 
     147        # Notify the listeners 
     148        self.parent.communicator.activeGraphsSignal.emit(PlotHelper.currentPlots()) 
     149        event.accept() 
     150 
Note: See TracChangeset for help on using the changeset viewer.