Changeset 2172 for trunk


Ignore:
Timestamp:
05/18/11 12:48:33 (14 years ago)
Author:
Kana Sugimoto
Message:

New Development: No

JIRA Issue: Yes (CAS-2963/ATNF-240)

Ready for Test: Yes

Interface Changes: No

What Interface Changed:

Test Programs: comare statistic result of interactive operation with command line none

Put in Release Notes: No

Module(s): asapplotter, sdplot

Description:

statistic mode in ASAP plotter now prints statistics (max, min, median, mean, sum, std dev) of
spectra only in the selected subplot.


Location:
trunk/python
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/python/customgui_base.py

    r2171 r2172  
    66from asap import scantable
    77from asap._asap import stmath
     8from asap.utils import _n_bools, mask_not, mask_or
    89
    910######################################
     
    113114
    114115
    115     ### Calculate statistics of the selected area.
    116     def _single_mask(self,event):
    117         # Do not fire event when in zooming/panning mode
    118         if not self.figmgr.toolbar.mode == '':
    119             return
    120         # When selected point is out of panels
    121         if event.inaxes == None:
    122             return
    123         if event.button == 1:
    124             baseinv=True
    125         elif event.button == 3:
    126             baseinv=False
    127         else:
    128             return
    129 
    130         def _calc_stats():
    131             msk=mymask.get_mask()
    132             statstr = ['max', 'min', 'mean', 'median', 'sum', 'stddev', 'rms']
    133             for stat in statstr:
    134                 mymask.scan.stats(stat=stat,mask=msk)
    135 
    136         # Interactive mask definition
    137         from asap.interactivemask import interactivemask
    138         mymask = interactivemask(plotter=self.plotter,scan=self.plotter._data)
    139         # Create initial mask
    140         mymask.set_basemask(invert=baseinv)
    141         # Inherit event
    142         mymask.set_startevent(event)
    143         # Set callback func
    144         mymask.set_callback(_calc_stats)
    145         # Selected mask
    146         mymask.select_mask(once=True,showmask=False)
    147 
     116    ### Notation
    148117    def _mod_note(self,event):
    149118        # Do not fire event when in zooming/panning mode
     
    167136        #print "No text picked"
    168137        return False
     138
     139
     140    ### Purely plotter based statistics calculation of a selected area.
     141    ### No access to scantable
     142    def _single_mask(self,event):
     143        # Do not fire event when in zooming/panning mode
     144        if not self.figmgr.toolbar.mode == '':
     145            return
     146        # When selected point is out of panels
     147        if event.inaxes == None:
     148            return
     149        if event.button == 1:
     150            exclude=False
     151        elif event.button == 3:
     152            exclude=True
     153        else:
     154            return
     155
     156        self._thisregion = {'axes': event.inaxes,'xs': event.x,
     157                            'worldx': [event.xdata,event.xdata],
     158                            'invert': exclude}
     159        self.xold = event.x
     160        self.xdataold = event.xdata
     161
     162        self.plotter._plotter.register('button_press',None)
     163        self.plotter._plotter.register('motion_notify', self._xspan_draw)
     164        self.plotter._plotter.register('button_press', self._xspan_end)
     165
     166    def _xspan_draw(self,event):
     167        if event.inaxes == self._thisregion['axes']:
     168            xnow = event.x
     169            self.xold = xnow
     170            self.xdataold = event.xdata
     171        else:
     172            xnow = self.xold
     173        try: self.lastspan
     174        except AttributeError: pass
     175        else:
     176            if self.lastspan: self._remove_span(self.lastspan)
     177
     178        self.lastspan = self._draw_span(self._thisregion['axes'],self._thisregion['xs'],xnow,fill="")
     179        del xnow
     180
     181    def _draw_span(self,axes,x0,x1,**kwargs):
     182        pass
     183
     184    def _remove_span(self,span):
     185        pass
     186
     187    @asaplog_post_dec
     188    def _xspan_end(self,event):
     189        if not self.figmgr.toolbar.mode == '':
     190            return
     191        #if event.button != 1:
     192        #    return
     193
     194        try: self.lastspan
     195        except AttributeError: pass
     196        else:
     197            self._remove_span(self.lastspan)
     198            del self.lastspan
     199        if event.inaxes == self._thisregion['axes']:
     200            xdataend = event.xdata
     201        else:
     202            xdataend = self.xdataold
     203
     204        self._thisregion['worldx'][1] = xdataend
     205        # print statistics of spectra in subplot
     206        self._subplot_stats(self._thisregion)
     207       
     208        # release event
     209        self.plotter._plotter.register('button_press',None)
     210        self.plotter._plotter.register('motion_notify',None)
     211        # Clear up region selection
     212        self._thisregion = None
     213        self.xdataold = None
     214        self.xold = None
     215        # finally recover region selection event
     216        self.plotter._plotter.register('button_press',self._single_mask)
     217
     218    def _subplot_stats(self,selection):
     219        #from numpy import ma, ndarray
     220        import numpy
     221        statstr = ['max', 'min', 'median', 'mean', 'sum', 'std'] #'rms']
     222        panelstr = selection['axes'].title.get_text()
     223        ssep = "-"*70
     224        asaplog.push(ssep)
     225        asaplog.post()
     226        for line in selection['axes'].lines:
     227            label = panelstr + ", "+line.get_label()
     228            x = line.get_xdata()
     229            selmsk = self._create_flag_from_array(x,selection['worldx'],selection['invert'])
     230            y = line.get_ydata()
     231            if isinstance(y,numpy.ma.masked_array):
     232                ydat = y.data
     233                basemsk = y.mask
     234            else:
     235                ydat = y
     236                basemsk = False
     237            if not isinstance(basemsk, bool):
     238                # should be ndarray
     239                newmsk = mask_or(selmsk,basemsk)
     240            elif basemsk:
     241                # the whole original spectrum is flagged
     242                newmsk = basemsk
     243            else:
     244                # no channel was flagged originally
     245                newmsk = selmsk
     246            mdata = numpy.ma.masked_array(ydat,mask=newmsk)
     247            del x, y, ydat, basemsk, selmsk, newmsk
     248            statval = {}
     249            for stat in statstr:
     250                statval[stat] = getattr(numpy,stat)(mdata)
     251            self._print_stats(statval,statstr=statstr,label=label,\
     252                              mask=selection['worldx'],\
     253                              unmask=selection['invert'])
     254            asaplog.push(ssep)
     255            asaplog.post()
     256            del mdata, statval
     257        del ssep, panelstr
     258
     259    def _create_flag_from_array(self,x,masklist,invert):
     260        # Return True for channels which should be EXCLUDED (flag)
     261        if len(masklist) <= 1:
     262            asaplog.push()
     263            asaplog.post("masklist should be a list of 2 elements")
     264            asaplog.push("ERROR")
     265        n = len(x)
     266        # Base mask: flag out all channels
     267        mask = _n_bools(n, True)
     268        minval = min(masklist[0:2])
     269        maxval = max(masklist[0:2])
     270        for i in range(n):
     271            if minval <= x[i] <= maxval:
     272                mask[i] = False
     273        if invert:
     274            mask = mask_not(mask)
     275        return mask
     276
     277    @asaplog_post_dec
     278    def _print_stats(self,stats,statstr=None,label="",mask=None,unmask=False):
     279        if not isinstance(stats,dict) or len(stats) == 0:
     280            asaplog.post()
     281            asaplog.push("Invalid statistic value")
     282            asaplog.post("ERROR")
     283        maskstr = "Not available"
     284        if mask:
     285            masktype = "mask"
     286            maskstr = str(mask)
     287            if unmask: masktype = "unmask"
     288
     289        sout = label + ", " + masktype + " = " + maskstr + "\n"
     290        statvals = []
     291        if not len(statstr):
     292            statstr = stats.keys()
     293        for key in statstr:
     294            sout += key.ljust(10)
     295            statvals.append(stats.pop(key))
     296        sout += "\n"
     297        sout += ("%f "*len(statstr) % tuple(statvals))
     298        asaplog.push(sout)
     299        del sout, maskstr, masktype, statvals, key, stats, statstr, mask, label
     300
    169301
    170302    ### Page chages
     
    255387        del lastpanel,currpnum,prevpnum,start_ipanel
    256388
    257     ### refresh the page counter
    258389    ### refresh the page counter
    259390    def set_pagecounter(self,page):
     
    710841        try: self.lastspan
    711842        except AttributeError: pass
    712         else: self._remove_span(self.lastspan)
     843        else:
     844            if self.lastspan: self._remove_span(self.lastspan)
    713845
    714846        #self.lastspan = self._draw_span(self._thisregion['axes'],self._thisregion['xs'],xnow,fill="#555555",stipple="gray50")
     
    737869            xdataend = event.xdata
    738870        else:
    739             xdataend=self.xdataold
     871            xdataend = self.xdataold
    740872
    741873        self._thisregion['worldx'][1] = xdataend
     
    750882            self._selregions[srow] = []
    751883        self._selregions[srow].append(lregion)
    752         del lregion, pregion, xdataend, self.xold, self.xdataold
     884        del lregion, pregion, xdataend
    753885        sout = "selected region: "+str(self._thisregion['worldx'])+\
    754886              "(@row "+str(self._getrownum(self._thisregion['axes']))+")"
     
    761893        self._thisregion = None
    762894        self.xdataold = None
     895        self.xold = None
    763896        # finally recover region selection event
    764897        self.plotter._plotter.register('button_press',self._add_region)
  • trunk/python/customgui_qt4agg.py

    r2168 r2172  
    3535                                     text='notation',
    3636                                     command=self.modify_note,
    37                                      balloon="Add note")
     37                                     balloon="add note on plot")
    3838        self.bNote.setCheckable(True)
    3939
     
    4141                                     text='statistics',
    4242                                     command=self.stat_cal,
    43                                      balloon="Calculate statistics")
     43                                     balloon="calculate statistics")
    4444        self.bStat.setCheckable(True)
    4545
     
    6060                                     text=' + ',
    6161                                     command=self.next_page,
    62                                      addit=False)
     62                                     addit=False,
     63                                     balloon="plot next page")
    6364        loPage.addWidget(self.bNext)
    6465        self.bPrev = self._NewButton(master=frPage,
    6566                                     text=' - ',
    66                                      command=self.prev_page,addit=False)
     67                                     command=self.prev_page,addit=False,
     68                                     balloon="plot previous page")
    6769        loPage.addWidget(self.bPrev)
    6870        frPage.setLayout(loPage)
     
    106108            # go back to spec mode
    107109            self.bStat.setChecked(False)
    108             self.bStat.setToolTip("Calculate statistics")
     110            self.bStat.setToolTip("calculate statistics")
    109111            self.spec_show()
    110112            return
     
    113115        self.bStat.setToolTip("Back to spec value mode")
    114116        self.bNote.setChecked(False)
     117        self.bNote.setToolTip("add note on plot")
    115118        self.mode = 'stat'
    116119        self.notewin.close_widgets()
     
    126129        if self.mode == 'note':
    127130            self.bNote.setChecked(False)
    128             self.bNote.setToolTip("Add note")
     131            self.bNote.setToolTip("add note on plot")
    129132            self.mode = 'none'
    130133            self.spec_show()
    131134            return
    132135        self.bStat.setChecked(False)
     136        self.bStat.setToolTip("calculate statistics")
    133137        self.bNote.setChecked(True)
    134138        self.bNote.setToolTip("Back to spec value mode")
     
    187191        self._p.register('button_release',None)
    188192
     193    def _draw_span(self,axes,x0,x1,**kwargs):
     194        height = self._p.figure.bbox.height
     195        y1 = height - axes.bbox.y1
     196        h = axes.bbox.height
     197        w = abs(x1 - x0)
     198        rect = [ int(val) for val in min(x0,x1), y1, w, h ]
     199        self._p.canvas.drawRectangle( rect )
     200        # nothing is returned by drawRectangle
     201        return None
     202
     203    def _remove_span(self,span):
     204        # Nothing to do with remove. just refresh (call only for)
     205        self.canvas.draw()
    189206
    190207
     
    513530##    Add CASA custom Flag toolbar       ##
    514531###########################################
     532# class CustomFlagToolbarQT4Agg(CustomFlagToolbarCommon,  qt.QtGui.QToolBar):
     533#     def __init__(self,parent):
     534#         from asap.asapplotter import asapplotter
     535#         if not isinstance(parent,asapplotter):
     536#             return False
     537#         if not parent._plotter:
     538#             return False
     539#         self._p = parent._plotter
     540#         self.figmgr = self._p.figmgr
     541#         self.canvas = self.figmgr.canvas
     542#         self.mode = ''
     543#         self.button = True
     544#         self.pagecount = None
     545#         CustomFlagToolbarCommon.__init__(self,parent)
     546#         self.notewin=NotationWindowQT4Agg(master=self.canvas)
     547#         self._add_custom_toolbar()
     548
     549#     def _add_custom_toolbar(self):
     550#         qt.QtGui.QToolBar.__init__(self,parent=self.figmgr.window)
     551#         self.figmgr.window.addToolBar(qt.QtCore.Qt.BottomToolBarArea,self)
     552# #         Tk.Frame.__init__(self,master=self.figmgr.window)
     553#         self.bRegion = self._NewButton(master=self,
     554#                                        text='region',
     555#                                        command=self.select_region,
     556#                                        balloon="select channel regions")
     557#         self.bRegion.setCheckable(True)
     558       
     559#         self.bPanel = self._NewButton(master=self,
     560#                                       text='panel',
     561#                                       command=self.select_panel,
     562#                                       balloon="select subplots")
     563#         self.bPanel.setCheckable(True)
     564
     565#         self.bClear = self._NewButton(master=self,
     566#                                       text='clear',
     567#                                       command=self.cancel_select,
     568#                                       balloon="clear selections")
     569
     570#         self.bFlag = self._NewButton(master=self,
     571#                                      text='flag',
     572#                                      command=self.flag,
     573#                                      balloon="flag selections")
     574
     575#         self.bUnflag = self._NewButton(master=self,
     576#                                        text='unflag',
     577#                                        command=self.unflag,
     578#                                        balloon="unflag selections")
     579
     580#         self.bStat = self._NewButton(master=self,
     581#                                      text='statistics',
     582#                                      command=self.stat_cal,
     583#                                      balloon="print statistics of selections")
     584
     585#         self.bNote = self._NewButton(master=self,
     586#                                      text='notation',
     587#                                      command=self.modify_note,
     588#                                      balloon="add note on plot")
     589#         self.bNote.setCheckable(True)
     590
     591#         # page change oparations
     592#         frPage = qt.QtGui.QWidget(parent=self,flags=qt.QtCore.Qt.Tool)
     593#         loPage = qt.QtGui.QHBoxLayout(self)
     594#         loPage.addStretch(1)
     595#         self.lPagetitle = qt.QtGui.QLabel('Page:',parent=frPage)
     596#         self.lPagetitle.setMargin(5)
     597#         loPage.addWidget(self.lPagetitle)
     598#         self.pagecount = qt.QtGui.QLabel(parent=frPage)
     599#         self.pagecount.setStyleSheet("background-color: white")
     600#         self.pagecount.setMargin(3)
     601#         self.pagecount.setText('   1')
     602#         loPage.addWidget(self.pagecount)
     603# #         frPage = Tk.Frame(master=self,borderwidth=2,relief=Tk.GROOVE)
     604# #         frPage.pack(ipadx=2,padx=10,side=Tk.RIGHT)
     605# #         self.lPagetitle = Tk.Label(master=frPage,text='Page:',padx=5)
     606# #                                    #width=8,anchor=Tk.E,padx=5)
     607# #         self.lPagetitle.pack(side=Tk.LEFT)
     608# #         self.pagecount = Tk.StringVar(master=frPage)
     609# #         self.lPagecount = Tk.Label(master=frPage,
     610# #                                    textvariable=self.pagecount,
     611# #                                    padx=5,bg='white')
     612# #         self.lPagecount.pack(side=Tk.LEFT,padx=3)
     613
     614#         self.bNext = self._NewButton(master=frPage,
     615#                                      text='+',
     616#                                      command=self.next_page,
     617#                                      addit=False,
     618#                                      balloon="plot next page")
     619#         loPage.addWidget(self.bNext)
     620#         self.bPrev = self._NewButton(master=frPage,
     621#                                      text='-',
     622#                                      command=self.prev_page,
     623#                                      addit=False,
     624#                                      balloon="plot previous page")
     625#         loPage.addWidget(self.bPrev)
     626#         frPage.setLayout(loPage)
     627#         self.addWidget(frPage)
     628
     629# #         self.bNext=self._NewButton(master=frPage,
     630# #                                    text=' + ',
     631# #                                    #imagename="hand.ppm",
     632# #                                    command=self.next_page)
     633# #         self.bPrev=self._NewButton(master=frPage,
     634# #                                    text=' - ',
     635# #                                    command=self.prev_page)
     636
     637#         self.bQuit = self._NewButton(master=self,
     638#                                      text='Quit',
     639#                                      #imagename="stock_close.ppm",
     640#                                      command=self.quit,
     641#                                      balloon="Close window")
     642
     643# #         if os.uname()[0] != 'Darwin':
     644# #             self.bPrev.config(padx=5)
     645# #             self.bNext.config(padx=5)
     646
     647#         self.pagecount.setText(' '*4)
     648# #         self.pack(side=Tk.BOTTOM,fill=Tk.BOTH)
     649# #         self.pagecount.set(' '*4)
     650
     651#         self.disable_button()
     652#         return
     653
     654#     def _NewButton(self, master, text, command, balloon=None,addit=True,imagename=None):
     655# #     def _NewButton(self, master, text, command, side=Tk.LEFT,imagename=None):
     656#         img = None
     657#         if imagename:
     658#             imagename = os.path.join(matplotlib.rcParams['datapath'], 'images', imagename)
     659# #             img = Tk.PhotoImage(master=master, file=imagename)
     660
     661#         b = qt.QtGui.QPushButton(text,parent=master)
     662#         if balloon: b.setToolTip(balloon)
     663#         if addit: master.addWidget(b)
     664#         master.connect(b,qt.QtCore.SIGNAL('clicked()'),command)
     665# #         if os.uname()[0] == 'Darwin':
     666# #             b = Tk.Button(master=master, text=text, image=img,
     667# #                           command=command)
     668# #             if img: b.image = img
     669# #         else:
     670# #             b = Tk.Button(master=master, text=text, image=img, padx=2, pady=2,
     671# #                           command=command)
     672# #             if img: b.image = img
     673# #         b.pack(side=side)
     674#         return b
     675
     676#     def show_pagenum(self,pagenum,formatstr):
     677#         self.pagecount.setText(formatstr % (pagenum))
     678# #         self.pagecount.set(formatstr % (pagenum))
     679
     680#     def spec_show(self):
     681#         if not self.figmgr.toolbar.mode == '' or not self.button: return
     682#         self.figmgr.toolbar.set_message('spec value: drag on a spec')
     683#         if self.mode == 'spec': return
     684#         self.mode = 'spec'
     685#         self.notewin.close_widgets()
     686#         self.__disconnect_event()
     687#         self._p.register('button_press',self._select_spectrum)
     688
     689#     def modify_note(self):
     690#         if not self.figmgr.toolbar.mode == '':
     691#             # Get back button status BEFORE clicked
     692#             self.bNote.setChecked(not self.bNote.isChecked())
     693#             return
     694#         self.figmgr.toolbar.set_message('text: select a position/text')
     695#         if self.mode == 'note':
     696#             self.bNote.setChecked(False)
     697#             self.bNote.setToolTip("add note on plot")
     698# #             self.bNote.config(relief='raised')
     699#             self.mode = 'none'
     700#             self.spec_show()
     701#             return
     702#         self.bNote.setChecked(True)
     703#         self.bNote.setToolTip("Back to spec value mode")
     704#         self.bRegion.setChecked(False)
     705#         self.bRegion.setToolTip("select channel regions")
     706#         self.bPanel.setChecked(False)
     707#         self.bPanel.setToolTip("select subplots")
     708# #         self.bNote.config(relief='sunken')
     709# #         self.bRegion.config(relief='raised')
     710# #         self.bPanel.config(relief='raised')
     711#         self.mode = 'note'
     712#         self.__disconnect_event()
     713#         self._p.register('button_press',self._mod_note)
     714
     715#     def select_region(self):
     716#         if not self.figmgr.toolbar.mode == '' or not self.button:
     717#             # Get back button status BEFORE clicked
     718#             self.bRegion.setChecked(not self.bRegion.isChecked())
     719#         self.figmgr.toolbar.set_message('select regions: click at start and end channels')
     720#         if self.mode == 'region':
     721#             self.bRegion.setChecked(False)
     722#             self.bRegion.setToolTip("select channel regions")
     723# #             self.bRegion.config(relief='raised')
     724#             self.mode = 'none'
     725#             self.spec_show()
     726#             return
     727#         self.bNote.setChecked(False)
     728#         self.bNote.setToolTip("add note on plot")
     729#         self.bRegion.setChecked(True)
     730#         self.bRegion.setToolTip("Back to spec value mode")
     731#         self.bPanel.setChecked(False)
     732#         self.bPanel.setToolTip("select subplots")
     733# #         self.bNote.config(relief='raised')
     734# #         self.bRegion.config(relief='sunken')
     735# #         self.bPanel.config(relief='raised')
     736#         self.mode = 'region'
     737#         self.notewin.close_widgets()
     738#         self.__disconnect_event()
     739#         self._p.register('button_press',self._add_region)
     740
     741#     def select_panel(self):
     742#         if not self.figmgr.toolbar.mode == '' or not self.button:
     743#             # Get back button status BEFORE clicked
     744#             self.bPanel.setChecked(not self.bPanel.isChecked())
     745#             return
     746#         self.figmgr.toolbar.set_message('select spectra: click on subplots')
     747#         if self.mode == 'panel':
     748#             self.bPanel.setChecked(False)
     749#             self.bPanel.setToolTip("select subplots")
     750# #             self.bPanel.config(relief='raised')
     751#             self.mode = 'none'
     752#             self.spec_show()
     753#             return
     754#         self.bNote.setChecked(False)
     755#         self.bNote.setToolTip("add note on plot")
     756#         self.bRegion.setChecked(False)
     757#         self.bRegion.setToolTip("select channel regions")
     758#         self.bPanel.setChecked(True)
     759#         self.bPanel.setToolTip("Back to spec value mode")
     760# #         self.bNote.config(relief='raised')
     761# #         self.bRegion.config(relief='raised')
     762# #         self.bPanel.config(relief='sunken')
     763#         self.mode = 'panel'
     764#         self.notewin.close_widgets()
     765#         self.__disconnect_event()
     766#         self._p.register('button_press',self._add_panel)
     767
     768#     def quit(self):
     769#         self.__disconnect_event()
     770#         self.disable_button()
     771#         self._p.unmap()
     772# #         self.figmgr.window.wm_withdraw()
     773
     774#     def enable_button(self):
     775#         if self.button: return
     776#         self.bRegion.setEnabled(True)
     777#         self.bPanel.setEnabled(True)
     778#         self.bClear.setEnabled(True)
     779#         self.bFlag.setEnabled(True)
     780#         self.bUnflag.setEnabled(True)
     781#         self.bStat.setEnabled(True)
     782# #         self.bRegion.config(state=Tk.NORMAL)
     783# #         self.bPanel.config(state=Tk.NORMAL)
     784# #         self.bClear.config(state=Tk.NORMAL)
     785# #         self.bFlag.config(state=Tk.NORMAL)
     786# #         self.bUnflag.config(state=Tk.NORMAL)
     787# #         self.bStat.config(state=Tk.NORMAL)
     788#         self.button = True
     789#         self.spec_show()
     790
     791#     def disable_button(self):
     792#         ## disable buttons which don't work for plottp
     793#         if not self.button: return
     794#         self.bRegion.setChecked(False)
     795#         self.bRegion.setToolTip("select channel regions")
     796#         self.bPanel.setChecked(False)
     797#         self.bPanel.setToolTip("select subplots")
     798# #         self.bRegion.config(relief='raised')
     799# #         self.bPanel.config(relief='raised')
     800#         self.bRegion.setDisabled(True)
     801#         self.bPanel.setDisabled(True)
     802#         self.bClear.setDisabled(True)
     803#         self.bFlag.setDisabled(True)
     804#         self.bUnflag.setDisabled(True)
     805#         self.bStat.setDisabled(True)
     806#         self.bNext.setDisabled(True)
     807#         self.bPrev.setDisabled(True)
     808# #         self.bRegion.config(state=Tk.DISABLED)
     809# #         self.bPanel.config(state=Tk.DISABLED)
     810# #         self.bClear.config(state=Tk.DISABLED)
     811# #         self.bFlag.config(state=Tk.DISABLED)
     812# #         self.bUnflag.config(state=Tk.DISABLED)
     813# #         self.bStat.config(state=Tk.DISABLED)
     814# #         self.bNext.config(state=Tk.DISABLED)
     815# #         self.bPrev.config(state=Tk.DISABLED)
     816#         self.button = False
     817#         self.mode = ''
     818#         self.notewin.close_widgets()
     819#         self.__disconnect_event()
     820
     821#     def enable_next(self):
     822#         self.bNext.setEnabled(True)
     823# #         self.bNext.config(state=Tk.NORMAL)
     824
     825#     def disable_next(self):
     826#         self.bNext.setDisabled(True)
     827# #         self.bNext.config(state=Tk.DISABLED)
     828
     829#     def enable_prev(self):
     830#         self.bPrev.setEnabled(True)
     831# #         self.bPrev.config(state=Tk.NORMAL)
     832
     833#     def disable_prev(self):
     834#         self.bPrev.setDisabled(True)
     835# #         self.bPrev.config(state=Tk.DISABLED)
     836
     837#     # pause buttons for slow operations
     838#     def _pause_buttons(self,operation="end",msg=""):
     839#         buttons = ["bRegion","bPanel","bClear","bFlag","bUnflag","bStat",
     840#                    "bNote","bQuit"]
     841#         if operation == "start":
     842#             enable = False
     843# #             state=Tk.DISABLED
     844#         else:
     845#             enable = True
     846# #             state=Tk.NORMAL
     847#         for btn in buttons:
     848#             getattr(self,btn).setEnabled(enable)
     849# #             getattr(self,btn).config(state=state)
     850#         self.figmgr.toolbar.set_message(msg)
     851
     852#     def delete_bar(self):
     853#         self.__disconnect_event()
     854#         self.destroy()
     855
     856#     def __disconnect_event(self):
     857#         self._p.register('button_press',None)
     858#         self._p.register('button_release',None)
     859
     860#     def _draw_span(self,axes,x0,x1,**kwargs):
     861#         height = self._p.figure.bbox.height
     862#         y1 = height - axes.bbox.y1
     863#         h = axes.bbox.height
     864#         w = abs(x1 - x0)
     865#         rect = [ int(val) for val in min(x0,x1), y1, w, h ]
     866#         self._p.canvas.drawRectangle( rect )
     867#         # nothing is returned by drawRectangle
     868#         return None
     869# #         return self._p.canvas._tkcanvas.create_rectangle(x0,y0,x1,y1,**kwargs)
     870
     871#     def _remove_span(self,span):
     872#         # Nothing to do with remove
     873#         pass
     874# #         self._p.canvas._tkcanvas.delete(span)
  • trunk/python/customgui_tkagg.py

    r2170 r2172  
    184184        self._p.register('button_release',None)
    185185
     186    def _draw_span(self,axes,x0,x1,**kwargs):
     187        height = self._p.figure.bbox.height
     188        y0 = height - axes.bbox.y0
     189        y1 = height - axes.bbox.y1
     190        return self._p.canvas._tkcanvas.create_rectangle(x0,y0,x1,y1,**kwargs)
     191
     192    def _remove_span(self,span):
     193        self._p.canvas._tkcanvas.delete(span)
    186194
    187195
Note: See TracChangeset for help on using the changeset viewer.