Exemple #1
0
    def __init__(self, master, nodeName="", figsize=(5, 4), dpi=100, isPolar=False):
        super(DataFigure, self).__init__(nodeName=nodeName)

        figure = Figure(figsize, dpi)

        canvas = FigureCanvasTkAgg(figure, master=master)
        canvas.show()

        self.__canvas = canvas
        toolbar = NavigationToolbar2TkAgg(canvas, master)
        toolbar.update()
        canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=YES)
        toolbar.pack()

        with self.attributeLock:
            # All the properties being set in this block will be locked automatically,
            # i.e. these properties cannot be replaced.
            setMultiAttr(
                self, figure=figure, lineObjects=[], axes=figure.add_subplot(111, polar=isPolar), isPolar=isPolar
            )
        self.indicators = self.Indicators(dataFig=self)

        self.plotFunction = None

        self.index = None  # Used by FigureList

        self.__majorGrid = isPolar
        self.__minorGrid = False

        self.__indicatorsMeta = []
Exemple #2
0
    def makeViewTab(self):
        toolTabs = self.toolTabs
        frmView = Frame(toolTabs)

        grpGrid = GridGroup(frmView,
                            bd=2,
                            relief=GROOVE,
                            balloon=self.balloon,
                            valueChecker=self.valueChecker)
        grpGrid.pack(side=LEFT, fill=Y)
        grpGrid.addObserver(self.figureBook.gridGroupObserver)
        self.figureBook.addObserver(grpGrid.figureObserver)

        grpAxis = AxisGroup(frmView,
                            bd=2,
                            relief=GROOVE,
                            balloon=self.balloon,
                            valueChecker=self.valueChecker)
        grpAxis.pack(side=LEFT, fill=Y)
        grpAxis.addObserver(self.figureBook.axisGroupObserver)
        self.figureBook.addObserver(grpAxis.figureObserver)

        grpClear = ClearGroup(frmView, bd=2, relief=GROOVE)
        grpClear.pack(side=LEFT, fill=Y)
        grpClear.addObserver(self.figureBook.clearGroupObserver)

        with self.attributeLock:
            setMultiAttr(self,
                         grpGrid=grpGrid,
                         grpAxis=grpAxis,
                         grpClear=grpClear,
                         viewFrame=frmView)

        toolTabs.add(frmView, text='View')
Exemple #3
0
    def __init__(self, *args, **kwargs):
        self._app = Application.instance    
        self.__topwin = kwargs.pop('topwin')

        super(OptimizeGroup, self).__init__(*args, **kwargs)
        
      
        
        paramFrm    = Frame(self)
        paramFrm.pack(side=LEFT, expand=YES, fill=Y)
        self.__num = ParamItem(paramFrm)
        setMultiAttr(self.__num,
            labelText   = 'num',
            entryText   = '1',
            labelWidth  = 5,
            entryWidth  = 8,
            checkFunc   = self._app.checkInt
        )
        self.__num.entry.bind('<Return>', lambda event: self.onSolveClick())
        self.__num.pack(side=TOP)

     

        self.__pci  = ParamItem(paramFrm)
        setMultiAttr(self.__pci,
            labelText   = 'PCI',
            entryText   = '100',
            labelWidth  = 5,
            entryWidth  = 8,
            checkFunc   = self._app.checkInt
        )
        self.__pci.pack(side=TOP)
        
        self.__bParallel    = IntVar()
        self.__chkParallel  = Checkbutton(paramFrm, text="Parallel", variable=self.__bParallel)
        self.__chkParallel.pack()
        
        progfrm = Frame(self)
        progfrm.pack(side=LEFT, expand=YES, fill=Y)

        self.__genbtn = Button(progfrm, text='Generate', command=self.onSolveClick)
        self.__genbtn.pack(side=TOP)  
        Button(progfrm, text='Stop', command=self.onStopBtnClick).pack(side=TOP)         
        
        self.__progress = IntVar()
        self.__finishedwav = IntVar()        
        self.__progbar = Progressbar(progfrm, orient='horizontal', variable=self.__progress, maximum=100)
        self.__progbar.pack(side=LEFT)
        self.__progbar.config(length=55)   
        self.__finishedwavbar = Progressbar(progfrm, orient='horizontal', variable=self.__finishedwav)
        self.__finishedwavbar.pack(side=LEFT)
        self.__finishedwavbar.config(length=30)  


        self.name = 'Generate'

        self.getparams = None
        self.__stopflag = False
Exemple #4
0
    def makeExportTab(self):
        toolTabs = self.toolTabs
        frmExport = Frame(toolTabs)
        grpFigureExport = FigureExportGroup(frmExport, bd=2, relief=GROOVE, topwin=self)
        grpFigureExport.pack(side=LEFT, fill=Y)

        with self.attributeLock:
            setMultiAttr(self, grpFigureExport=grpFigureExport, exportFrame=frmExport)

        toolTabs.add(frmExport, text="Export")
Exemple #5
0
    def __init__(self, *args, **kwargs):
        #        app = Application.instance
        if "valueChecker" in kwargs:
            valueChecker = kwargs.pop("valueChecker")
            checkFloat = valueChecker.checkFloat
        else:
            checkFloat = None

        if "balloon" in kwargs:
            balloonBindWidget = kwargs.pop("balloon").bind_widget
        else:
            balloonBindWidget = lambda *args, **kwargs: None

        super(AxisGroup, self).__init__(*args, **kwargs)
        self.__params = [StringVar() for i in range(8)]
        paramfrm = Frame(self)
        paramfrm.pack()
        names = ["xmin", "xmax", "ymin", "ymax", "major xtick", "major ytick", "minor xtick", "minor ytick"]
        images = [
            "ViewTab_XMin.png",
            "ViewTab_XMax.png",
            "ViewTab_YMin.png",
            "ViewTab_YMax.png",
            "ViewTab_MajorXTick.png",
            "ViewTab_MajorYTick.png",
            "ViewTab_MinorXTick.png",
            "ViewTab_MinorYTick.png",
        ]
        for c in range(4):
            for r in range(2):
                temp = ParamItem(paramfrm)
                image = ImageTk.PhotoImage(file=uiImagePath(images[c * 2 + r]))
                setMultiAttr(
                    temp,
                    checkFunc=checkFloat,
                    # labelText   = names[c*2+r],
                    labelImage=image,
                    labelWidth=5 if c * 2 + r < 4 else 10,
                    entryWidth=5,
                    entryVar=self.__params[c * 2 + r],
                )
                temp.entry.bind("<Return>", self.onConfirmClick)
                temp.grid(row=r, column=c)
                balloonBindWidget(temp, balloonmsg=names[c * 2 + r])

        btnfrm = Frame(self)
        btnfrm.pack()
        Button(btnfrm, text="Confirm", command=self.onConfirmClick).pack(side=LEFT)
        Button(btnfrm, text="Auto", command=self.onAutoClick).pack(side=RIGHT)
        self.name = "Axis"
        self.__figureObserver = self.FigureObserver(self)
Exemple #6
0
    def __init__(self, *args, **kwargs):
        #        app = Application.instance
        if 'valueChecker' in kwargs:
            valueChecker = kwargs.pop('valueChecker')
            checkFloat = valueChecker.checkFloat
        else:
            checkFloat = None

        if 'balloon' in kwargs:
            balloonBindWidget = kwargs.pop('balloon').bind_widget
        else:
            balloonBindWidget = lambda *args, **kwargs: None

        super(AxisGroup, self).__init__(*args, **kwargs)
        self.__params = [StringVar() for i in range(8)]
        paramfrm = Frame(self)
        paramfrm.pack()
        names = [
            'xmin', 'xmax', 'ymin', 'ymax', 'major xtick', 'major ytick',
            'minor xtick', 'minor ytick'
        ]
        images = [
            'ViewTab_XMin.png', 'ViewTab_XMax.png', 'ViewTab_YMin.png',
            'ViewTab_YMax.png', 'ViewTab_MajorXTick.png',
            'ViewTab_MajorYTick.png', 'ViewTab_MinorXTick.png',
            'ViewTab_MinorYTick.png'
        ]
        for c in range(4):
            for r in range(2):
                temp = ParamItem(paramfrm)
                image = ImageTk.PhotoImage(file=uiImagePath(images[c * 2 + r]))
                setMultiAttr(
                    temp,
                    checkFunc=checkFloat,
                    #labelText   = names[c*2+r],
                    labelImage=image,
                    labelWidth=5 if c * 2 + r < 4 else 10,
                    entryWidth=5,
                    entryVar=self.__params[c * 2 + r])
                temp.entry.bind('<Return>', self.onConfirmClick)
                temp.grid(row=r, column=c)
                balloonBindWidget(temp, balloonmsg=names[c * 2 + r])

        btnfrm = Frame(self)
        btnfrm.pack()
        Button(btnfrm, text='Confirm',
               command=self.onConfirmClick).pack(side=LEFT)
        Button(btnfrm, text='Auto', command=self.onAutoClick).pack(side=RIGHT)
        self.name = 'Axis'
        self.__figureObserver = self.FigureObserver(self)
Exemple #7
0
    def makeExportTab(self):
        toolTabs = self.toolTabs
        frmExport = Frame(toolTabs)
        grpFigureExport = FigureExportGroup(frmExport,
                                            bd=2,
                                            relief=GROOVE,
                                            topwin=self)
        grpFigureExport.pack(side=LEFT, fill=Y)

        with self.attributeLock:
            setMultiAttr(self,
                         grpFigureExport=grpFigureExport,
                         exportFrame=frmExport)

        toolTabs.add(frmExport, text='Export')
Exemple #8
0
    def makeMarkerTab(self):
        toolTabs = self.toolTabs
        frmMarker = Frame(toolTabs)

        grpLabel = LabelGroup(frmMarker, bd=2, relief=GROOVE)
        grpLabel.pack(side=LEFT, fill=Y)
        grpLabel.addObserver(self.figureBook.labelGroupObserver)

        grpIndicator = IndicatorGroup(frmMarker, bd=2, relief=GROOVE)
        grpIndicator.pack(side=LEFT, fill=Y)
        grpIndicator.addObserver(self.figureBook.indicatorGroupObserver)

        with self.attributeLock:
            setMultiAttr(self, grpLabel=grpLabel, grpIndicator=grpIndicator)

        toolTabs.add(frmMarker, text='Marker')
Exemple #9
0
    def makeMarkerTab(self):
        toolTabs = self.toolTabs
        frmMarker = Frame(toolTabs)

        grpLabel = LabelGroup(frmMarker, bd=2, relief=GROOVE)
        grpLabel.pack(side=LEFT, fill=Y)
        grpLabel.addObserver(self.figureBook.labelGroupObserver)

        grpIndicator = IndicatorGroup(frmMarker, bd=2, relief=GROOVE)
        grpIndicator.pack(side=LEFT, fill=Y)
        grpIndicator.addObserver(self.figureBook.indicatorGroupObserver)

        with self.attributeLock:
            setMultiAttr(self, grpLabel=grpLabel, grpIndicator=grpIndicator)

        toolTabs.add(frmMarker, text="Marker")
Exemple #10
0
    def makeViewTab(self):
        toolTabs = self.toolTabs
        frmView = Frame(toolTabs)

        grpGrid = GridGroup(frmView, bd=2, relief=GROOVE, balloon=self.balloon, valueChecker=self.valueChecker)
        grpGrid.pack(side=LEFT, fill=Y)
        grpGrid.addObserver(self.figureBook.gridGroupObserver)
        self.figureBook.addObserver(grpGrid.figureObserver)

        grpAxis = AxisGroup(frmView, bd=2, relief=GROOVE, balloon=self.balloon, valueChecker=self.valueChecker)
        grpAxis.pack(side=LEFT, fill=Y)
        grpAxis.addObserver(self.figureBook.axisGroupObserver)
        self.figureBook.addObserver(grpAxis.figureObserver)

        grpClear = ClearGroup(frmView, bd=2, relief=GROOVE)
        grpClear.pack(side=LEFT, fill=Y)
        grpClear.addObserver(self.figureBook.clearGroupObserver)

        with self.attributeLock:
            setMultiAttr(self, grpGrid=grpGrid, grpAxis=grpAxis, grpClear=grpClear, viewFrame=frmView)

        toolTabs.add(frmView, text="View")
Exemple #11
0
    def __init__(self,
                 master,
                 nodeName='',
                 figsize=(5, 4),
                 dpi=100,
                 isPolar=False):
        super(DataFigure, self).__init__(nodeName=nodeName)

        figure = Figure(figsize, dpi)

        canvas = FigureCanvasTkAgg(figure, master=master)
        canvas.show()

        self.__canvas = canvas
        toolbar = NavigationToolbar2TkAgg(canvas, master)
        toolbar.update()
        canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=YES)
        toolbar.pack()

        with self.attributeLock:
            # All the properties being set in this block will be locked automatically,
            # i.e. these properties cannot be replaced.
            setMultiAttr(self,
                         figure=figure,
                         lineObjects=[],
                         axes=figure.add_subplot(111, polar=isPolar),
                         isPolar=isPolar)
        self.indicators = self.Indicators(dataFig=self)

        self.plotFunction = None

        self.index = None  # Used by FigureList

        self.__majorGrid = isPolar
        self.__minorGrid = False

        self.__indicatorsMeta = []
Exemple #12
0
    def __init__(self, *args, **kwargs):
        '''
nodeName:   The name of this node. Usually set by ModelNode.__setattr__ automatically.
figureMeta: Meta information of figure.
The rest parameters are passed to PanedWindow.__init__.
'''
        nodeName = kwargs.pop('nodeName', '')
        # lock

        super(FigureBook, self).__init__(nodeName=nodeName)

        figureMeta = None if 'figureMeta' not in kwargs \
            else kwargs.pop('figureMeta')
        kwargs['orient'] = HORIZONTAL

        panedWindow = PanedWindow(*args, **kwargs)

        panedWindow.config(sashwidth=4, sashrelief=GROOVE, bg='forestgreen')

        #        figureTabsStyle = Style()
        #        figureTabsStyle.configure('Figure.TNotebook', tabposition='sw')
        #        figureTabs    = Notebook(panedWindow, style='Figure.TNotebook')
        figureTabs = Notebook(panedWindow)

        self.figureTabs = figureTabs
        figureTabs.bind('<<NotebookTabChanged>>', self.onTabChange)
        self.lockAttribute('figureTabs')

        if figureMeta:
            self.makeFigures(figureMeta)

        self.lockElements()

        panedWindow.add(figureTabs, stretch='always')

        listPan = PanedWindow(panedWindow, orient=VERTICAL)
        listPan.config(sashwidth=4, sashrelief=GROOVE, bg='forestgreen')
        panedWindow.add(listPan, stretch='never')

        listFrm = Frame(listPan)
        listPan.add(listFrm, stretch='always')
        Label(listFrm, text='Curves', bg='#b5d6b0').pack(side=TOP, fill=X)
        self.__list = ScrolledList(listFrm, relief=GROOVE)
        self.__list.listConfig(width=20)
        self.__list.listClick = self.onListClick
        self.__list.pack(fill=BOTH, expand=YES)

        listFrm = Frame(listPan)
        listPan.add(listFrm, stretch='never')
        Label(listFrm, text='Indicators', bg='#b5d6b0').pack(side=TOP, fill=X)
        self.__indicatorListbox = ScrolledList(listFrm, relief=GROOVE)
        self.__indicatorListbox.listConfig(width=20)
        self.__indicatorListbox.pack(fill=BOTH, expand=YES)

        with self.attributeLock:
            setMultiAttr(
                self,
                panedWindow=panedWindow,
                gridGroupObserver=self.GridGroupObserver(self),
                axisGroupObserver=self.AxisGroupObserver(self),
                clearGroupObserver=self.ClearGroupObserver(self),
                labelGroupObserver=self.LabelGroupObserver(self),
                indicatorGroupObserver=self.IndicatorGroupObserver(self),
                dataFigureObserver=self.DataFigureObserver(self),
                dataPool=[])
Exemple #13
0
    def __init__(self):
        # The instance of this class is the root of the model tree. Thus isRoot is set to True
        super(Application, self).__init__(nodeName=Scripting.rootName, isRoot=True)
        Scripting.nameSpace['locals'][Scripting.rootName] = self
        Scripting.nameSpace['globals'] = globals()
        self.homePage = 'https://github.com/xialulee/WaveSyn'
        
        filePath    = getsourcefile(type(self))
        dirPath     = os.path.split(filePath)[0]
        
        # load config file
        configFileName  = os.path.join(dirPath, 'config.json')
        with open(configFileName) as f:
            config  = json.load(f)
        consoleMenu = config['ConsoleMenu']
        self.editorInfo   = config['EditorInfo']
        self.lockAttribute('editorInfo')
        self.promptSymbols  = config['PromptSymbols']

        tagDefs = config['TagDefs']
        # End load config file

        root = Tix.Tk()
        mainThreadId    = thread.get_ident()
        
        from wavesynlib.interfaces.xmlrpc.server import CommandSlot
        

        valueChecker    = ValueChecker(root)        
        
        with self.attributeLock:
            setMultiAttr(self,
                # UI elements
                root = root,        
                balloon = Tix.Balloon(root),
                tbicon = TaskbarIcon(root),
                # End UI elements
                
                mainThreadId        = mainThreadId,
                execThreadLock      = threading.RLock(),
                xmlrpcCommandSlot   = CommandSlot(),
            
                # Validation Functions
                valueChecker        = valueChecker,
                checkInt            = valueChecker.checkInt,
                checkFloat          = valueChecker.checkFloat,
                checkPositiveFloat  = valueChecker.checkPositiveFloat,
                # End Validation Functions
                
                filePath    = filePath,
                dirPath     = dirPath,
                                
                streamManager   =StreamManager(),                
                
                configFileName  = configFileName
            )        
        
        

        
        from wavesynlib.basewindow import WindowDict                                  
        self.windows    = WindowDict() # Instance of ModelNode can be locked automatically.
        self.editors    = EditorDict()

        class EditorObserver(object): # use SimpleObserver instead
            def __init__(self, wavesyn):
                self.wavesyn    = wavesyn

            def update(self, editor):
                wavesyn = self.wavesyn                
                code    = editor.code
                if not code:
                    return
                wavesyn.streamManager.write('WaveSyn: executing code from editor {0} listed as follows:\n'.format(id(editor)), 'TIP')
                wavesyn.streamManager.write(code, 'HISTORY')
                wavesyn.streamManager.write('\n')
                wavesyn.execute(code)

        self.editors.manager.addObserver(EditorObserver(self))

        with self.attributeLock:
            self.monitorTimer    = self.createTimer(interval=100, active=False)
        # Make wavesyn.editors.manager check wavesyn.editors every 100ms
        self.monitorTimer.addObserver(self.editors.manager) 
        self.monitorTimer.addObserver(self.streamManager)
        
        frm = Frame(root)
        frm.pack(side=TOP, fill=X)                

        self.console = ConsoleWindow(menu=consoleMenu, tagDefs=tagDefs)
        self.streamManager.addObserver(self.console.streamObserver) #!
             
        self.clipboard = Clipboard()
        self.scripting = Scripting(self)
        self.noTip = False

        self.monitorTimer.active    = True
Exemple #14
0
    def __init__(self, *args, **kwargs):
        """
nodeName:   The name of this node. Usually set by ModelNode.__setattr__ automatically.
figureMeta: Meta information of figure.
The rest parameters are passed to PanedWindow.__init__.
"""
        nodeName = kwargs.pop("nodeName", "")
        # lock

        super(FigureBook, self).__init__(nodeName=nodeName)

        figureMeta = None if "figureMeta" not in kwargs else kwargs.pop("figureMeta")
        kwargs["orient"] = HORIZONTAL

        panedWindow = PanedWindow(*args, **kwargs)

        panedWindow.config(sashwidth=4, sashrelief=GROOVE, bg="forestgreen")

        #        figureTabsStyle = Style()
        #        figureTabsStyle.configure('Figure.TNotebook', tabposition='sw')
        #        figureTabs    = Notebook(panedWindow, style='Figure.TNotebook')
        figureTabs = Notebook(panedWindow)

        self.figureTabs = figureTabs
        figureTabs.bind("<<NotebookTabChanged>>", self.onTabChange)
        self.lockAttribute("figureTabs")

        if figureMeta:
            self.makeFigures(figureMeta)

        self.lockElements()

        panedWindow.add(figureTabs, stretch="always")

        listPan = PanedWindow(panedWindow, orient=VERTICAL)
        listPan.config(sashwidth=4, sashrelief=GROOVE, bg="forestgreen")
        panedWindow.add(listPan, stretch="never")

        listFrm = Frame(listPan)
        listPan.add(listFrm, stretch="always")
        Label(listFrm, text="Curves", bg="#b5d6b0").pack(side=TOP, fill=X)
        self.__list = ScrolledList(listFrm, relief=GROOVE)
        self.__list.listConfig(width=20)
        self.__list.listClick = self.onListClick
        self.__list.pack(fill=BOTH, expand=YES)

        listFrm = Frame(listPan)
        listPan.add(listFrm, stretch="never")
        Label(listFrm, text="Indicators", bg="#b5d6b0").pack(side=TOP, fill=X)
        self.__indicatorListbox = ScrolledList(listFrm, relief=GROOVE)
        self.__indicatorListbox.listConfig(width=20)
        self.__indicatorListbox.pack(fill=BOTH, expand=YES)

        with self.attributeLock:
            setMultiAttr(
                self,
                panedWindow=panedWindow,
                gridGroupObserver=self.GridGroupObserver(self),
                axisGroupObserver=self.AxisGroupObserver(self),
                clearGroupObserver=self.ClearGroupObserver(self),
                labelGroupObserver=self.LabelGroupObserver(self),
                indicatorGroupObserver=self.IndicatorGroupObserver(self),
                dataFigureObserver=self.DataFigureObserver(self),
                dataPool=[],
            )
Exemple #15
0
    def __init__(self, *args, **kwargs):     
        FigureWindow.__init__(self, *args, **kwargs)
        self.currentData    = None
                
        # algorithm dict and current data
        self.algorithms = AlgorithmDict()
        self.lockAttribute('algorithms')
        #        
        
        # The toolbar
        toolTabs    = self.toolTabs
        figureBook  = self.figureBook
        
        frmAlgo = Frame(toolTabs)
        grpAlgoSel  = AlgoSelGroup(frmAlgo, topwin=self)
        grpAlgoSel.pack(side=LEFT, fill=Y)
        
        grpParams   = ParamsGroup(frmAlgo, topwin=self)
        grpParams.pack(side=LEFT, fill=Y)
        
        grpSolve    = OptimizeGroup(frmAlgo, topwin=self)
        grpSolve.pack(side=LEFT, fill=Y)
        toolTabs.add(frmAlgo, text='Algorithm')
        
        with self.attributeLock:
            setMultiAttr(self,
                grpAlgoSel  = grpAlgoSel,
                grpParams   = grpParams,
                grpSolve    = grpSolve                         
            )
        

        
        self.makeViewTab()
        self.makeMarkerTab()
        self.makeExportTab()
        # End toolbar
        figureBook.makeFigures(
            figureMeta  = [
                dict(name='Envelope',           polar=False),
                dict(name='Phase',              polar=False),
                dict(name='AutoCorrelation',    polar=False),
                dict(name='PSD',                polar=False)
            ]
        )
        
        with open(Application.instance.configFileName) as f:
            config  = json.load(f)
        algorithms  = config['SingleWaveformAlgorithms']

        for algo in algorithms:
            self.loadAlgorithm(moduleName=algo['ModuleName'], className=algo['ClassName'])

        self.grpAlgoSel.algoList.current(len(algorithms)-1)
        
        figEnvelope = figureBook[0]
        figEnvelope.plotFunction  = lambda currentData, *args, **kwargs:\
            figEnvelope.plot(abs(currentData), *args, **kwargs)
        
        figPhase    = figureBook[1]
        figPhase.plotFunction   = lambda currentData, *args, **kwargs:\
            figPhase.plot(angle(currentData), *args, **kwargs)
            
        def plot_acdb(currentData, *args, **kwargs):
            s   = currentData
            if not isinstance(s, ndarray):
                s   = array(s)
            N       = len(s)
            ac      = convolve(s, conj(s[::-1]))
            acdb    = 20*log10(abs(ac))
            acdb    = acdb - max(acdb)
            figAuto.plot(r_[(-N+1):N], acdb, *args, **kwargs)            
            
        figAuto     = figureBook[2]
        figAuto.plotFunction    = plot_acdb
            
        figPSD      = figureBook[3]
        figPSD.plotFunction     = lambda currentData, *args, **kwargs:\
            figPSD.plot(abs(fft.fft(currentData)), *args, **kwargs)
Exemple #16
0
    def __init__(self, *args, **kwargs):
        self._app = Application.instance
        self.__topwin = kwargs.pop('topwin')
        Group.__init__(self, *args, **kwargs)
        frm = Frame(self)

        self.__center = ParamItem(frm)
        setMultiAttr(self.__center,
                     labelText='center(deg)',
                     entryText=0,
                     checkFunc=self._app.checkInt,
                     entryWidth=5,
                     labelWidth=10)
        self.__center.pack(side=TOP)
        self._app.balloon.bind_widget(
            self.__center, balloonmsg='Specify the beam center here.')

        self.__width = ParamItem(frm)
        setMultiAttr(self.__width,
                     labelText='width(deg)',
                     entryText=20,
                     checkFunc=self._app.checkInt,
                     entryWidth=5,
                     labelWidth=10)
        self.__width.pack(side=TOP)
        self._app.balloon.bind_widget(
            self.__width, balloonmsg='Specify the beam width here.')

        self.__uiImages = []

        imageAddBtn = ImageTk.PhotoImage(
            file=uiImagePath('Pattern_Add_Button.png'))
        self.__uiImages.append(imageAddBtn)
        btn = Button(frm, image=imageAddBtn, command=self.onAdd)
        btn.pack(side=LEFT)
        self._app.balloon.bind_widget(
            btn, balloonmsg='Add new beam to the ideal pattern.')

        imageDelBtn = ImageTk.PhotoImage(
            file=uiImagePath('Pattern_Del_Button.png'))
        self.__uiImages.append(imageDelBtn)
        btn = Button(frm, image=imageDelBtn, command=self.onDel)
        btn.pack(side=LEFT)
        self._app.balloon.bind_widget(
            btn, balloonmsg='Remove the selected beam in the listbox.')

        imageClrBtn = ImageTk.PhotoImage(
            file=uiImagePath('Pattern_Clear_Button.png'))
        self.__uiImages.append(imageClrBtn)
        btn = Button(frm, image=imageClrBtn, command=self.onClear)
        btn.pack(side=LEFT)
        self._app.balloon.bind_widget(
            btn, balloonmsg='Clear the listbox of the beam parameters.')

        imagePlotBtn = ImageTk.PhotoImage(
            file=uiImagePath('Pattern_Plot_Button.png'))
        self.__uiImages.append(imagePlotBtn)
        btn = Button(frm, image=imagePlotBtn, command=self.onPlotIdealPattern)
        btn.pack(side=LEFT)
        self._app.balloon.bind_widget(btn,
                                      balloonmsg='Plot the ideal pattern.')

        frm.pack(side=LEFT, fill=Y)

        self.__paramlist = ScrolledList(self)
        self.__paramlist.list.config(height=4, width=10)
        self.__paramlist.pack(side=LEFT)
        self.name = 'Edit Ideal Pattern'

        self.optgrp = None
Exemple #17
0
 def __init__(self, *args, **kwargs):
     self._app = Application.instance
     self.__topwin = kwargs.pop('topwin')
     Group.__init__(self, *args, **kwargs)
     frm = Frame(self)
     
     self.__center = ParamItem(frm)
     setMultiAttr(self.__center,        
         labelText   = 'center(deg)',        
         entryText   = 0,    
         checkFunc   = self._app.checkInt,
         entryWidth  = 5,    
         labelWidth  = 10
     )                       
     self.__center.pack(side=TOP)        
     self._app.balloon.bind_widget(self.__center, balloonmsg='Specify the beam center here.')
     
     self.__width = ParamItem(frm)
     setMultiAttr(self.__width,
         labelText   = 'width(deg)',
         entryText   = 20,
         checkFunc   = self._app.checkInt,
         entryWidth  = 5,
         labelWidth  = 10
     )
     self.__width.pack(side=TOP)
     self._app.balloon.bind_widget(self.__width, balloonmsg='Specify the beam width here.')
     
     self.__uiImages = []
             
             
     imageAddBtn = ImageTk.PhotoImage(
         file=uiImagePath('Pattern_Add_Button.png')
     )
     self.__uiImages.append(imageAddBtn)
     btn = Button(frm, image=imageAddBtn, command=self.onAdd)
     btn.pack(side=LEFT)
     self._app.balloon.bind_widget(btn, balloonmsg='Add new beam to the ideal pattern.')
     
     imageDelBtn = ImageTk.PhotoImage(
         file=uiImagePath('Pattern_Del_Button.png')
     )
     self.__uiImages.append(imageDelBtn)
     btn = Button(frm, image=imageDelBtn, command=self.onDel)
     btn.pack(side=LEFT)
     self._app.balloon.bind_widget(btn, balloonmsg='Remove the selected beam in the listbox.')
     
     imageClrBtn = ImageTk.PhotoImage(
         file=uiImagePath('Pattern_Clear_Button.png')
     )
     self.__uiImages.append(imageClrBtn)
     btn = Button(frm, image=imageClrBtn, command=self.onClear)
     btn.pack(side=LEFT)
     self._app.balloon.bind_widget(btn, balloonmsg='Clear the listbox of the beam parameters.')
     
     imagePlotBtn = ImageTk.PhotoImage(
         file=uiImagePath('Pattern_Plot_Button.png')
     )
     self.__uiImages.append(imagePlotBtn)
     btn = Button(frm, image=imagePlotBtn, command=self.onPlotIdealPattern)
     btn.pack(side=LEFT)
     self._app.balloon.bind_widget(btn, balloonmsg='Plot the ideal pattern.')
     
     frm.pack(side=LEFT, fill=Y)
     
     self.__paramlist = ScrolledList(self)
     self.__paramlist.list.config(height=4, width=10)
     self.__paramlist.pack(side=LEFT)
     self.name = 'Edit Ideal Pattern'
     
     self.optgrp = None