示例#1
0
    def onReadSParametersFromFile(self):
        import SignalIntegrity.Lib as si
        filename=AskOpenFileName(filetypes=[('s-parameter files', ('*.s*p'))],
                                 initialdir=self.fileparts.AbsoluteFilePath(),
                                 parent=self)
        if filename is None:
            return
        self.fileparts=FileParts(filename)
        if self.fileparts.fileext=='':
            return

        self.title('S-parameters: '+self.fileparts.FileNameTitle())

        self.sp=si.sp.SParameterFile(filename)
        self.referenceImpedance.SetValueFromString(str(self.sp.m_Z0))
        self.referenceImpedanceProperty.propertyString.set(self.referenceImpedance.PropertyString(stype='entry'))
        for widget in self.sButtonsFrame.winfo_children():
            widget.destroy()
        numPorts=self.sp.m_P
        self.buttonLabels=[['s'+str(toP+1)+str(fromP+1) for fromP in range(numPorts)] for toP in range(numPorts)]
        self.buttons=[]
        for toP in range(numPorts):
            buttonrow=[]
            rowFrame=tk.Frame(self.sButtonsFrame)
            rowFrame.pack(side=tk.TOP,expand=tk.NO,fill=tk.NONE)
            for fromP in range(numPorts):
                thisButton=tk.Button(rowFrame,text=self.buttonLabels[toP][fromP],command=lambda x=toP+1,y=fromP+1: self.onSelectSParameter(x,y))
                thisButton.pack(side=tk.LEFT,fill=tk.NONE,expand=tk.NO)
                buttonrow.append(thisButton)
            self.buttons.append(buttonrow)
        self.fromPort = 1
        self.toPort = 1
        self.buttons[self.toPort-1][self.fromPort-1].config(relief=tk.SUNKEN)
        self.PlotSParameter()
示例#2
0
 def onFileBrowse(self):
     # this is a seemingly ugly workaround
     # I do this because when you change the number of ports and then touch the file
     # browse button, the ports are updated after this call based on the button press.
     # without this ugly thing, the file extension reflects the wrong number of ports
     # until the next time you press the button, when it is right.
     # This workaround forces the ports to be updated now.
     for pp in range(len(self.parent.device.propertiesList)):
         if self.parent.device.propertiesList[pp][
                 'PropertyName'] == 'ports':
             self.parent.propertyFrameList[pp].onUntouched(None)
     # end of ugly workaround
     self.callBack()
     if self.partProperty['PropertyName'] in ['filename', 'std']:
         extension = '.s' + self.device['ports'].PropertyString(
             stype='raw') + 'p'
         filetypename = 's-parameters'
     elif self.partProperty['PropertyName'] == 'waveformfilename':
         extension = '.txt'
         filetypename = 'waveforms'
     elif self.partProperty['PropertyName'] == 'errorterms':
         extension = '.cal'
         filetypename = 'calibration file'
     else:
         extension = ''
         filetypename = 'all'
     currentFileParts = FileParts(
         self.partProperty.PropertyString(stype='raw'))
     if currentFileParts.filename == '':
         initialDirectory = self.parent.parent.parent.fileparts.AbsoluteFilePath(
         )
         initialFile = ''
     else:
         initialDirectory = currentFileParts.AbsoluteFilePath()
         if currentFileParts.fileext in ['.si', extension]:
             initialFile = currentFileParts.FileNameWithExtension()
         else:
             initialFile = currentFileParts.filename + extension
     filename = AskOpenFileName(parent=self,
                                filetypes=[(filetypename, extension),
                                           ('project', '.si')],
                                initialdir=initialDirectory,
                                initialfile=initialFile)
     if filename is None:
         filename = ''
     if isinstance(filename, tuple):
         filename = ''
     filename = str(filename)
     if filename != '':
         filename = FileParts(filename).FullFilePathExtension()
         self.propertyString.set(filename)
         self.partProperty.SetValueFromString(self.propertyString.get())
         self.callBack()
     if self.partProperty['PropertyName'] == 'waveformfilename':
         filename = self.partProperty.GetValue()
         isProject = FileParts(filename).fileext == '.si'
         for propertyFrame in self.parent.propertyFrameList:
             if propertyFrame.partProperty['PropertyName'] == 'wfprojname':
                 propertyFrame.partProperty['Hidden'] = not isProject
     self.callBack()
示例#3
0
 def onTouched(self,event):
     fp=FileParts(self.fileparts.AbsoluteFilePath()+'/'+self.project[self.projectPath])
     filename=AskOpenFileName(filetypes=[('txt', '.txt')],
                             initialdir=fp.AbsoluteFilePath(),
                             initialfile=fp.FileNameWithExtension('txt'))
     if filename is None:
         return
     filename=ConvertFileNameToRelativePath(filename)
     self.project[self.projectPath]=filename
     self.UpdateStrings()
示例#4
0
    def onOpenFile(self):
        self.__file = AskOpenFileName(defaultextension=".txt",
                                      filetypes=[("All Files", "*.*"),
                                                 ("Text Documents", "*.txt")])
        if self.__file == "":
            # no file to open
            self.__file = None
        else:
            # Try to open the file
            # set the window title
            self.__root.title(os.path.basename(self.__file) + " - Notepad")
            self.TextArea.delete(1.0, tk.END)

            file = open(self.__file, "r")

            self.TextArea.insert(1.0, file.read())

            file.close()