<commit_before>#!/usr/bin/env python

# version
__id__ = "$Id: aboutdialog.py 1193 2007-05-03 17:29:59Z dmitriy $"
__revision__ = "$Revision: 1193 $"

import wx
import sys
from sans.guiframe.utils import format_number
from sans.guicomm.events import StatusEvent ,NewPlotEvent

import matplotlib 
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas
from matplotlib import pyplot, mpl, pylab

DEFAULT_CMAP= pylab.cm.jet
class DetectorDialog(wx.Dialog):
    """
        Dialog box to let the user edit detector settings
    """
    
    def __init__(self,parent,id=1,base=None,dpi = None,cmap=DEFAULT_CMAP,
                 reset_zmin_ctl = None,reset_zmax_ctl = None, *args, **kwds):

        kwds["style"] = wx.DEFAULT_DIALOG_STYLE
        wx.Dialog.__init__(self,parent,id=1, *args, **kwds)
    
        self.parent=base
        self.dpi = dpi
        self.cmap = cmap

        self.reset_zmin_ctl= reset_zmin_ctl
        self.reset_zmax_ctl= reset_zmax_ctl
            
        self.label_xnpts = wx.StaticText(self, -1, "Detector width in pixels")
        self.label_ynpts = wx.StaticText(self, -1, "Detector Height in pixels")
        self.label_qmax = wx.StaticText(self, -1, "Q max")
        self.label_zmin = wx.StaticText(self, -1, "Min amplitude for color map (optional)")
        self.label_zmax = wx.StaticText(self, -1, "Max amplitude for color map (optional)")
        self.label_beam = wx.StaticText(self, -1, "Beam stop radius in units of q")
        
        self.xnpts_ctl = wx.StaticText(self, -1, "")
        self.ynpts_ctl = wx.StaticText(self, -1, "")
        self.qmax_ctl = wx.StaticText(self, -1, "")
        self.beam_ctl = wx.StaticText(self, -1, "")
        
        self.zmin_ctl = wx.TextCtrl(self, -1, size=(60,20))
        self.zmin_ctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
        self.zmax_ctl = wx.TextCtrl(self, -1, size=(60,20))
        self.zmax_ctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
    
        self.static_line_3 = wx.StaticLine(self, -1)
        
        self.button_Cancel = wx.Button(self, wx.ID_CANCEL, "Cancel")
        self.button_reset = wx.Button(self, wx.NewId(),"Reset")
        self.Bind(wx.EVT_BUTTON, self.resetValues, self.button_reset)
        self.button_OK = wx.Button(self, wx.ID_OK, "OK")
        self.Bind(wx.EVT_BUTTON, self.checkValues, self.button_OK)

        self.__set_properties()
        self.__do_layout()

        self.Fit()
        
    class Event:
        xnpts = 0
        ynpts = 0
        qpax = 0
        beam = 0
        zmin = 0
        zmax = 0
        cmap= None
        sym4 = False
    
    
  
    def onSetFocus(self, event):
        """
            Highlight the txtcrtl
        """
        # Get a handle to the TextCtrl
        widget = event.GetEventObject()
        # Select the whole control, after this event resolves
        wx.CallAfter(widget.SetSelection, -1,-1)
        return
        
    def resetValues(self, event):
        """
            reset detector info
        """
        try:
            self.zmin_ctl.SetValue(str(float(self.reset_zmin_ctl)))
            self.zmax_ctl.SetValue(str(float(self.reset_zmax_ctl)))
            self.cmap = DEFAULT_CMAP
            self.cmap_selector.SetValue("jet")
            self._on_select_cmap(event=None)
        except:
            msg ="error occurs while resetting Detector: %s"%sys.exc_value
            wx.PostEvent(self.parent,StatusEvent(status= msg ))
        
        
    def checkValues(self, event):
        """
            Check the valitidity of zmin and zmax value
            zmax should be a float and zmin less than zmax
        """
        flag = True
        try:
            value=self.zmin_ctl.GetValue()
            if value and float( value)==0.0:
                flag = False
                wx.PostEvent(self.parent, StatusEvent(status="Enter number greater than zero"))
                self.zmin_ctl.SetBackgroundColour("pink")
                self.zmin_ctl.Refresh()
            else:
                self.zmin_ctl.SetBackgroundColour(wx.WHITE)
                self.zmin_ctl.Refresh()
        except:
            flag = False
            wx.PostEvent(self.parent, StatusEvent(status="Enter float value"))
            self.zmin_ctl.SetBackgroundColour("pink")
            self.zmin_ctl.Refresh()
        try:
            value=self.zmax_ctl.GetValue()
            if value and float(value)==0.0:
                flag = False
                wx.PostEvent(self.parent, StatusEvent(status="Enter number greater than zero"))
                self.zmax_ctl.SetBackgroundColour("pink")
                self.zmax_ctl.Refresh()
            else:
                self.zmax_ctl.SetBackgroundColour(wx.WHITE)
                self.zmax_ctl.Refresh()
        except:
            flag = False
            wx.PostEvent(self.parent, StatusEvent(status="Enter Integer value"))
            self.zmax_ctl.SetBackgroundColour("pink")
            self.zmax_ctl.Refresh()
        
        if flag:
            event.Skip(True)
    
    def setContent(self, xnpts,ynpts, qmax, beam,zmin=None,zmax=None, sym=False):
        """
            received value and displayed them
            @param xnpts: the number of point of the x_bins of data
            @param ynpts: the number of point of the y_bins of data
            @param qmax: the maxmimum value of data pixel
            @param beam : the radius of the beam
            @param zmin:  the value to get the minimum color
            @param zmax:  the value to get the maximum color
            @param sym:
        """
        self.xnpts_ctl.SetLabel(str(float(xnpts)))
        self.ynpts_ctl.SetLabel(str(float(ynpts)))
        self.qmax_ctl.SetLabel(str(float(qmax)))
        self.beam_ctl.SetLabel(str(float(beam)))
        
    
       
        if zmin !=None:
            self.zmin_ctl.SetValue(str(float(zmin)))
        if zmax !=None:
            self.zmax_ctl.SetValue(str(float(zmax)))

    def getContent(self):
        """
            @return event containing value to reset the detector of a given data
        """
        event = self.Event()
       
        t_min = self.zmin_ctl.GetValue()
        t_max = self.zmax_ctl.GetValue()
        v_min = None
        v_max = None
        
        if len(t_min.lstrip())>0:
            try:
                v_min = float(t_min)
            except:
                v_min = None
        
        if len(t_max.lstrip())>0:
            try:
                v_max = float(t_max)
            except:
                v_max = None
        
        event.zmin = v_min
        event.zmax = v_max
        event.cmap= self.cmap
        
        return event

    def __set_properties(self):
        """
            set proprieties of the dialog window
        """
        self.SetTitle("Detector parameters")
        self.SetSize((600, 595))


    def __do_layout(self):
        """
            fill the dialog window .
        """
        sizer_main = wx.BoxSizer(wx.VERTICAL)
        sizer_button = wx.BoxSizer(wx.HORIZONTAL)
        sizer_params = wx.GridBagSizer(5,5)
        sizer_colormap = wx.BoxSizer(wx.VERTICAL)
        sizer_selection= wx.BoxSizer(wx.HORIZONTAL)
       

        iy = 0
        sizer_params.Add(self.label_xnpts, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.xnpts_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_ynpts, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.ynpts_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_qmax, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.qmax_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_beam, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.beam_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_zmin, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.zmin_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_zmax, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.zmax_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        
        
       
        self.fig = mpl.figure.Figure(dpi=self.dpi, figsize=(4,1))
       
        self.ax1 = self.fig.add_axes([0.05, 0.65, 0.9, 0.15])
        
        
        self.norm = mpl.colors.Normalize(vmin=0, vmax=100)
        self.cb1 = mpl.colorbar.ColorbarBase(self.ax1, cmap=self.cmap,
                                           norm= self.norm,
                                           orientation='horizontal')
        self.cb1.set_label('Detector Colors')
        self.canvas = Canvas(self, -1, self.fig)
        sizer_colormap.Add(self.canvas,0, wx.LEFT | wx.EXPAND,5)
      
        self.cmap_selector = wx.ComboBox(self, -1)
        self.cmap_selector.SetValue(str(self.cmap.name))
        maps = sorted(m for m in pylab.cm.datad if not m.endswith("_r"))
       
        for i,m in enumerate(maps):
            
            self.cmap_selector.Append(str(m), pylab.get_cmap(m))
        
        wx.EVT_COMBOBOX(self.cmap_selector,-1, self._on_select_cmap)
        sizer_selection.Add(wx.StaticText(self,-1,"Select Cmap: "),0, wx.LEFT|wx.ADJUST_MINSIZE,5) 
        sizer_selection.Add(self.cmap_selector, 0, wx.EXPAND|wx.ALL, 10)
        
        sizer_main.Add(sizer_params, 0, wx.EXPAND|wx.ALL, 10)
        
        sizer_main.Add(sizer_selection, 0, wx.EXPAND|wx.ALL, 10)
        sizer_main.Add(sizer_colormap, 1, wx.EXPAND|wx.ALL, 10)
        sizer_main.Add(self.static_line_3, 0, wx.EXPAND, 0)
        
        
        sizer_button.Add(self.button_reset,0, wx.LEFT|wx.ADJUST_MINSIZE, 100)
        sizer_button.Add(self.button_OK, 0, wx.LEFT|wx.ADJUST_MINSIZE, 10)
        sizer_button.Add(self.button_Cancel, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)
        
        
        sizer_main.Add(sizer_button, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
        self.SetAutoLayout(True)
        self.SetSizer(sizer_main)
        self.Layout()
        self.Centre()
        # end wxGlade
        
    def _on_select_cmap(self, event):
        """
             display a new cmap 
        """
        cmap_name= self.cmap_selector.GetCurrentSelection()
        current_cmap= self.cmap_selector.GetClientData( cmap_name )
        self.cmap= current_cmap
        self.cb1 = mpl.colorbar.ColorbarBase(self.ax1, cmap=self.cmap,
                                           norm= self.norm,
                                           orientation='horizontal')
        self.canvas.draw()


# end of class DialogAbout

##### testing code ############################################################
class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        dialog = DetectorDialog(None, -1, "")
        self.SetTopWindow(dialog)
        dialog.setContent(xnpts=128,ynpts=128, qmax=20,
                           beam=20,zmin=2,zmax=60, sym=False)
        print dialog.ShowModal()
        evt = dialog.getContent()
        if hasattr(evt,"npts"):
            print "number of point: ",evt.npts
        if hasattr(evt,"qmax"): 
            print "qmax: ",evt.qmax
        dialog.Destroy()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
    
##### end of testing code #####################################################    
<commit_msg>detector fix for reset button<commit_after>#!/usr/bin/env python

# version
__id__ = "$Id: aboutdialog.py 1193 2007-05-03 17:29:59Z dmitriy $"
__revision__ = "$Revision: 1193 $"

import wx
import sys
from sans.guiframe.utils import format_number
from sans.guicomm.events import StatusEvent ,NewPlotEvent

import matplotlib 
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas
from matplotlib import pyplot, mpl, pylab

DEFAULT_CMAP= pylab.cm.jet
class DetectorDialog(wx.Dialog):
    """
        Dialog box to let the user edit detector settings
    """
    
    def __init__(self,parent,id=1,base=None,dpi = None,cmap=DEFAULT_CMAP,
                 reset_zmin_ctl = None,reset_zmax_ctl = None, *args, **kwds):

        kwds["style"] = wx.DEFAULT_DIALOG_STYLE
        wx.Dialog.__init__(self,parent,id=1, *args, **kwds)
    
        self.parent=base
        self.dpi = dpi
        self.cmap = cmap

        self.reset_zmin_ctl= reset_zmin_ctl
        self.reset_zmax_ctl= reset_zmax_ctl
            
        self.label_xnpts = wx.StaticText(self, -1, "Detector width in pixels")
        self.label_ynpts = wx.StaticText(self, -1, "Detector Height in pixels")
        self.label_qmax = wx.StaticText(self, -1, "Q max")
        self.label_zmin = wx.StaticText(self, -1, "Min amplitude for color map (optional)")
        self.label_zmax = wx.StaticText(self, -1, "Max amplitude for color map (optional)")
        self.label_beam = wx.StaticText(self, -1, "Beam stop radius in units of q")
        
        self.xnpts_ctl = wx.StaticText(self, -1, "")
        self.ynpts_ctl = wx.StaticText(self, -1, "")
        self.qmax_ctl = wx.StaticText(self, -1, "")
        self.beam_ctl = wx.StaticText(self, -1, "")
        
        self.zmin_ctl = wx.TextCtrl(self, -1, size=(60,20))
        self.zmin_ctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
        self.zmax_ctl = wx.TextCtrl(self, -1, size=(60,20))
        self.zmax_ctl.Bind(wx.EVT_SET_FOCUS, self.onSetFocus)
    
        self.static_line_3 = wx.StaticLine(self, -1)
        
        self.button_Cancel = wx.Button(self, wx.ID_CANCEL, "Cancel")
        self.button_reset = wx.Button(self, wx.NewId(),"Reset")
        self.Bind(wx.EVT_BUTTON, self.resetValues, self.button_reset)
        self.button_OK = wx.Button(self, wx.ID_OK, "OK")
        self.Bind(wx.EVT_BUTTON, self.checkValues, self.button_OK)

        self.__set_properties()
        self.__do_layout()

        self.Fit()
        
    class Event:
        xnpts = 0
        ynpts = 0
        qpax = 0
        beam = 0
        zmin = 0
        zmax = 0
        cmap= None
        sym4 = False
    
    
  
    def onSetFocus(self, event):
        """
            Highlight the txtcrtl
        """
        # Get a handle to the TextCtrl
        widget = event.GetEventObject()
        # Select the whole control, after this event resolves
        wx.CallAfter(widget.SetSelection, -1,-1)
        return
        
    def resetValues(self, event):
        """
            reset detector info
        """
        try:
            zmin= self.reset_zmin_ctl
            zmax= self.reset_zmax_ctl
            if zmin==None:
                zmin= ""
            if zmax==None:
                zmax= ""    
            self.zmin_ctl.SetValue(str(zmin))
            self.zmax_ctl.SetValue(str(zmax))
            self.cmap = DEFAULT_CMAP
            self.cmap_selector.SetStringSelection("jet")
            self._on_select_cmap(event=None)
        except:
            msg ="error occurs while resetting Detector: %s"%sys.exc_value
            wx.PostEvent(self.parent,StatusEvent(status= msg ))
        
        
    def checkValues(self, event):
        """
            Check the valitidity of zmin and zmax value
            zmax should be a float and zmin less than zmax
        """
        flag = True
        try:
            value=self.zmin_ctl.GetValue()
            if value and float( value)==0.0:
                flag = False
                wx.PostEvent(self.parent, StatusEvent(status="Enter number greater than zero"))
                self.zmin_ctl.SetBackgroundColour("pink")
                self.zmin_ctl.Refresh()
            else:
                self.zmin_ctl.SetBackgroundColour(wx.WHITE)
                self.zmin_ctl.Refresh()
        except:
            flag = False
            wx.PostEvent(self.parent, StatusEvent(status="Enter float value"))
            self.zmin_ctl.SetBackgroundColour("pink")
            self.zmin_ctl.Refresh()
        try:
            value=self.zmax_ctl.GetValue()
            if value and float(value)==0.0:
                flag = False
                wx.PostEvent(self.parent, StatusEvent(status="Enter number greater than zero"))
                self.zmax_ctl.SetBackgroundColour("pink")
                self.zmax_ctl.Refresh()
            else:
                self.zmax_ctl.SetBackgroundColour(wx.WHITE)
                self.zmax_ctl.Refresh()
        except:
            flag = False
            wx.PostEvent(self.parent, StatusEvent(status="Enter Integer value"))
            self.zmax_ctl.SetBackgroundColour("pink")
            self.zmax_ctl.Refresh()
        
        if flag:
            event.Skip(True)
    
    def setContent(self, xnpts,ynpts, qmax, beam,zmin=None,zmax=None, sym=False):
        """
            received value and displayed them
            @param xnpts: the number of point of the x_bins of data
            @param ynpts: the number of point of the y_bins of data
            @param qmax: the maxmimum value of data pixel
            @param beam : the radius of the beam
            @param zmin:  the value to get the minimum color
            @param zmax:  the value to get the maximum color
            @param sym:
        """
        self.xnpts_ctl.SetLabel(str(float(xnpts)))
        self.ynpts_ctl.SetLabel(str(float(ynpts)))
        self.qmax_ctl.SetLabel(str(float(qmax)))
        self.beam_ctl.SetLabel(str(float(beam)))
        
    
       
        if zmin !=None:
            self.zmin_ctl.SetValue(str(float(zmin)))
        if zmax !=None:
            self.zmax_ctl.SetValue(str(float(zmax)))

    def getContent(self):
        """
            @return event containing value to reset the detector of a given data
        """
        event = self.Event()
       
        t_min = self.zmin_ctl.GetValue()
        t_max = self.zmax_ctl.GetValue()
        v_min = None
        v_max = None
        
        if len(t_min.lstrip())>0:
            try:
                v_min = float(t_min)
            except:
                v_min = None
        
        if len(t_max.lstrip())>0:
            try:
                v_max = float(t_max)
            except:
                v_max = None
        
        event.zmin = v_min
        event.zmax = v_max
        event.cmap= self.cmap
        
        return event

    def __set_properties(self):
        """
            set proprieties of the dialog window
        """
        self.SetTitle("Detector parameters")
        self.SetSize((600, 595))


    def __do_layout(self):
        """
            fill the dialog window .
        """
        sizer_main = wx.BoxSizer(wx.VERTICAL)
        sizer_button = wx.BoxSizer(wx.HORIZONTAL)
        sizer_params = wx.GridBagSizer(5,5)
        sizer_colormap = wx.BoxSizer(wx.VERTICAL)
        sizer_selection= wx.BoxSizer(wx.HORIZONTAL)
       

        iy = 0
        sizer_params.Add(self.label_xnpts, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.xnpts_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_ynpts, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.ynpts_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_qmax, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.qmax_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_beam, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.beam_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_zmin, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.zmin_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        sizer_params.Add(self.label_zmax, (iy,0), (1,1), wx.LEFT|wx.EXPAND|wx.ADJUST_MINSIZE, 15)
        sizer_params.Add(self.zmax_ctl,   (iy,1), (1,1), wx.EXPAND|wx.ADJUST_MINSIZE, 0)
        iy += 1
        
        
       
        self.fig = mpl.figure.Figure(dpi=self.dpi, figsize=(4,1))
       
        self.ax1 = self.fig.add_axes([0.05, 0.65, 0.9, 0.15])
        
        
        self.norm = mpl.colors.Normalize(vmin=0, vmax=100)
        self.cb1 = mpl.colorbar.ColorbarBase(self.ax1, cmap=self.cmap,
                                           norm= self.norm,
                                           orientation='horizontal')
        self.cb1.set_label('Detector Colors')
        self.canvas = Canvas(self, -1, self.fig)
        sizer_colormap.Add(self.canvas,0, wx.LEFT | wx.EXPAND,5)
      
        self.cmap_selector = wx.ComboBox(self, -1)
        self.cmap_selector.SetValue(str(self.cmap.name))
        maps = sorted(m for m in pylab.cm.datad if not m.endswith("_r"))
       
        for i,m in enumerate(maps):
            
            self.cmap_selector.Append(str(m), pylab.get_cmap(m))
        
        wx.EVT_COMBOBOX(self.cmap_selector,-1, self._on_select_cmap)
        sizer_selection.Add(wx.StaticText(self,-1,"Select Cmap: "),0, wx.LEFT|wx.ADJUST_MINSIZE,5) 
        sizer_selection.Add(self.cmap_selector, 0, wx.EXPAND|wx.ALL, 10)
        
        sizer_main.Add(sizer_params, 0, wx.EXPAND|wx.ALL, 10)
        
        sizer_main.Add(sizer_selection, 0, wx.EXPAND|wx.ALL, 10)
        sizer_main.Add(sizer_colormap, 1, wx.EXPAND|wx.ALL, 10)
        sizer_main.Add(self.static_line_3, 0, wx.EXPAND, 0)
        
        
        sizer_button.Add(self.button_reset,0, wx.LEFT|wx.ADJUST_MINSIZE, 100)
        sizer_button.Add(self.button_OK, 0, wx.LEFT|wx.ADJUST_MINSIZE, 10)
        sizer_button.Add(self.button_Cancel, 0, wx.LEFT|wx.RIGHT|wx.ADJUST_MINSIZE, 10)
        
        
        sizer_main.Add(sizer_button, 0, wx.EXPAND|wx.BOTTOM|wx.TOP, 10)
        self.SetAutoLayout(True)
        self.SetSizer(sizer_main)
        self.Layout()
        self.Centre()
        # end wxGlade
        
    def _on_select_cmap(self, event):
        """
             display a new cmap 
        """
        cmap_name= self.cmap_selector.GetCurrentSelection()
        current_cmap= self.cmap_selector.GetClientData( cmap_name )
        self.cmap= current_cmap
        self.cb1 = mpl.colorbar.ColorbarBase(self.ax1, cmap=self.cmap,
                                           norm= self.norm,
                                           orientation='horizontal')
        self.canvas.draw()


# end of class DialogAbout

##### testing code ############################################################
class MyApp(wx.App):
    def OnInit(self):
        wx.InitAllImageHandlers()
        dialog = DetectorDialog(None, -1, "")
        self.SetTopWindow(dialog)
        dialog.setContent(xnpts=128,ynpts=128, qmax=20,
                           beam=20,zmin=2,zmax=60, sym=False)
        print dialog.ShowModal()
        evt = dialog.getContent()
        if hasattr(evt,"npts"):
            print "number of point: ",evt.npts
        if hasattr(evt,"qmax"): 
            print "qmax: ",evt.qmax
        dialog.Destroy()
        return 1

# end of class MyApp

if __name__ == "__main__":
    app = MyApp(0)
    app.MainLoop()
    
##### end of testing code #####################################################    

{'fraction_non_alphanumeric': 0.12181138346489406, 'fraction_numerical': 0.01703365184877441, 'mean_word_length': 1.8282223005522265, 'pattern_counts': {'":': 2, '<': 3, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 16, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '412675', 'n_tokens_mistral': 8514, 'n_tokens_neox': 7848, 'n_words': 1440}