diff options
author | GauravSupal | 2015-06-30 14:43:38 +0530 |
---|---|---|
committer | GauravSupal | 2015-06-30 14:43:38 +0530 |
commit | f2201054f1602c2252228adcbc9335d8aa18dbac (patch) | |
tree | 25611e8878b6c0131128eede5916661c71d4aaf9 | |
parent | f7cf0e9a67627ed6ce73892a75445ba84e6b9b21 (diff) | |
parent | 0dfbb704aa843baeb75b1f20acbe72fc57ee7707 (diff) | |
download | eSim-f2201054f1602c2252228adcbc9335d8aa18dbac.tar.gz eSim-f2201054f1602c2252228adcbc9335d8aa18dbac.tar.bz2 eSim-f2201054f1602c2252228adcbc9335d8aa18dbac.zip |
Merge pull request #1 from FOSSEE/master
Update
-rw-r--r-- | images/fosseeLogo.png | bin | 0 -> 21645 bytes | |||
-rw-r--r-- | src/SubcircuitLibrary/lm555n/lm555n_Previous_Values.xml | 2 | ||||
-rwxr-xr-x | src/frontEnd/Application.py | 72 | ||||
-rw-r--r-- | src/frontEnd/DockArea.py | 24 | ||||
-rw-r--r-- | src/frontEnd/Workspace.py | 32 | ||||
-rw-r--r-- | src/kicadtoNgspice/Analysis.py | 15 | ||||
-rw-r--r-- | src/kicadtoNgspice/Convert.py | 37 | ||||
-rw-r--r-- | src/kicadtoNgspice/KicadtoNgspice.py | 2 | ||||
-rw-r--r-- | src/kicadtoNgspice/Model.py | 6 | ||||
-rw-r--r-- | src/kicadtoNgspice/Processing.py | 19 | ||||
-rw-r--r-- | src/ngspiceSimulation/NgspiceWidget.py | 2 | ||||
-rw-r--r-- | src/projManagement/Kicad.py | 2 |
12 files changed, 163 insertions, 50 deletions
diff --git a/images/fosseeLogo.png b/images/fosseeLogo.png Binary files differnew file mode 100644 index 00000000..3a64d09a --- /dev/null +++ b/images/fosseeLogo.png diff --git a/src/SubcircuitLibrary/lm555n/lm555n_Previous_Values.xml b/src/SubcircuitLibrary/lm555n/lm555n_Previous_Values.xml index 7d81146a..09c35028 100644 --- a/src/SubcircuitLibrary/lm555n/lm555n_Previous_Values.xml +++ b/src/SubcircuitLibrary/lm555n/lm555n_Previous_Values.xml @@ -1 +1 @@ -<KicadtoNgspice><analysis><ac><field1 name="Lin">true</field1><field2 name="Dec">false</field2><field3 name="Oct">false</field3><field4 name="Start Frequency" /><field5 name="Stop Frequency" /><field6 name="No. of points" /><field7 name="Start Fre Combo">Hz</field7><field8 name="Stop Fre Combo">Hz</field8></ac><dc><field1 name="Source Name" /><field2 name="Start" /><field3 name="Increment" /><field4 name="Stop" /><field5 name="Operating Point">False</field5><field6 name="Start Combo">Volts or Amperes</field6><field7 name="Increment Combo">Volts or Amperes</field7><field8 name="Stop Combo">Volts or Amperes</field8></dc><tran><field1 name="Start Time" /><field2 name="Step Time" /><field3 name="Stop Time" /><field4 name="Start Combo">Sec</field4><field5 name="Step Combo">Sec</field5><field6 name="Stop Combo">Sec</field6></tran></analysis><source /><model><u5 name="type">d_inverter<field1 name="Enter Fall Delay (default=1.0e-9)" /><field2 name="Enter Input Load (default=1.0e-12)" /><field3 name="Enter Rise Delay (default=1.0e-9)" /></u5><u6 name="type">d_srlatch<field4 name="Enter IC (default=0)" /><field5 name="Enter value for SR Load (default=1.0e-12)" /><field6 name="Enter Set Delay (default=1.0e-9)" /><field7 name="Enter value for Set Load (default=1.0e-12)" /><field8 name="Enter SR Delay (default=1.0e-9)" /><field9 name="Enter Enable Delay (default=1.0e-9)" /><field10 name="Enter Reset Delay (default=1.0)" /><field11 name="Enter Rise Delay (default=1.0e-9)" /><field12 name="Enter Fall Delay (default=1.0e-9)" /><field13 name="Enter value for Reset Load (default=1.0e-12)" /><field14 name="Enter value for Enable Load (default=1.0e-12)" /></u6></model><devicemodel><q1><field /></q1></devicemodel></KicadtoNgspice>
\ No newline at end of file +<KicadtoNgspice><source /><model><u5 name="type">d_inverter<field1 name="Enter Fall Delay (default=1.0e-9)" /><field2 name="Enter Input Load (default=1.0e-12)" /><field3 name="Enter Rise Delay (default=1.0e-9)" /></u5><u6 name="type">d_srlatch<field4 name="Enter IC (default=0)" /><field5 name="Enter value for SR Load (default=1.0e-12)" /><field6 name="Enter Set Delay (default=1.0e-9)" /><field7 name="Enter value for Set Load (default=1.0e-12)" /><field8 name="Enter SR Delay (default=1.0e-9)" /><field9 name="Enter Enable Delay (default=1.0e-9)" /><field10 name="Enter Reset Delay (default=1.0)" /><field11 name="Enter Rise Delay (default=1.0e-9)" /><field12 name="Enter Fall Delay (default=1.0e-9)" /><field13 name="Enter value for Reset Load (default=1.0e-12)" /><field14 name="Enter value for Enable Load (default=1.0e-12)" /></u6></model><devicemodel><q1><field /></q1></devicemodel><analysis><ac><field1 name="Lin">true</field1><field2 name="Dec">false</field2><field3 name="Oct">false</field3><field4 name="Start Frequency" /><field5 name="Stop Frequency" /><field6 name="No. of points" /><field7 name="Start Fre Combo">Hz</field7><field8 name="Stop Fre Combo">Hz</field8></ac><dc><field1 name="Source Name" /><field2 name="Start" /><field3 name="Increment" /><field4 name="Stop" /><field5 name="Operating Point">False</field5><field6 name="Start Combo">Volts or Amperes</field6><field7 name="Increment Combo">Volts or Amperes</field7><field8 name="Stop Combo">Volts or Amperes</field8></dc><tran><field1 name="Start Time" /><field2 name="Step Time" /><field3 name="Stop Time" /><field4 name="Start Combo">Sec</field4><field5 name="Step Combo">Sec</field5><field6 name="Stop Combo">Sec</field6></tran></analysis></KicadtoNgspice>
\ No newline at end of file diff --git a/src/frontEnd/Application.py b/src/frontEnd/Application.py index 9fce17b0..a139a7bd 100755 --- a/src/frontEnd/Application.py +++ b/src/frontEnd/Application.py @@ -33,6 +33,7 @@ from PyQt4.Qt import QSize class Application(QtGui.QMainWindow): + global project_name """ Its our main window of application """ @@ -59,7 +60,8 @@ class Application(QtGui.QMainWindow): self.obj_appconfig._app_heigth) self.setWindowTitle(self.obj_appconfig._APPLICATION) self.showMaximized() - self.show() + self.setWindowIcon(QtGui.QIcon('../../images/logo.png')) + #self.show() def initToolBar(self): @@ -89,7 +91,16 @@ class Application(QtGui.QMainWindow): self.topToolbar.addAction(self.openproj) self.topToolbar.addAction(self.exitproj) self.topToolbar.addAction(self.helpfile) - + + self.spacer = QtGui.QWidget() + self.spacer.setSizePolicy(QtGui.QSizePolicy.Expanding,QtGui.QSizePolicy.Expanding) + self.topToolbar.addWidget(self.spacer) + self.logo = QtGui.QLabel() + self.logopic = QtGui.QPixmap(os.path.join(os.path.abspath('../..'),'images','fosseeLogo.png')) + self.logopic = self.logopic.scaled(QSize(150,150),QtCore.Qt.KeepAspectRatio) + self.logo.setPixmap(self.logopic) + self.topToolbar.addWidget(self.logo) + #Left Tool bar Action Widget self.kicad = QtGui.QAction(QtGui.QIcon('../../images/kicad.png'),'<b>Open Schematic</b>',self) self.kicad.triggered.connect(self.obj_kicad.openSchematic) @@ -246,8 +257,8 @@ class MainView(QtGui.QWidget): self.obj_appconfig.noteArea['Note'].append(' eSim Started......') self.obj_appconfig.noteArea['Note'].append('Project Selected : None') self.obj_appconfig.noteArea['Note'].append('\n') - #CSS + #CSS self.noteArea.setStyleSheet(" \ QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; } \ ") @@ -282,32 +293,61 @@ def main(args): """ print "Starting eSim......" app = QtGui.QApplication(args) - - """ - splash_pix = QtGui.QPixmap('../images/FreeEDAlogo.jpg') + + splash_pix = QtGui.QPixmap('../../images/splash_screen_esim.png') + splash = QtGui.QSplashScreen(splash_pix,QtCore.Qt.WindowStaysOnTopHint) + splash.setMask(splash_pix.mask()) + splash.show() + #QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("Cleanlooks")) + appView = Application() + appView.splash=splash + appView.obj_workspace.returnWhetherClickedOrNot(appView) + appView.hide() + appView.obj_workspace.show() + sys.exit(app.exec_()) + #appView.hide() + ######################################################################################################################################## + + """splash_pix = QtGui.QPixmap('../images/splash_screen_esim.png') splash = QtGui.QSplashScreen(splash_pix,QtCore.Qt.WindowStaysOnTopHint) - progressBar = QtGui.QProgressBar(splash) + progressBar = QtGui.QProgressBar(splash) + progressBar.setGeometry(0,470,1004,20) splash.setMask(splash_pix.mask()) splash.show() for i in range(0, 100): progressBar.setValue(i) - t = time.time() + #cond=threading.Condition() + if i==50: + + appView = Application() + appView.hide() + #appView.obj_workspace.returnWhetherClickedOrNot(appView) + appView.obj_workspace.show() + #appView.obj_workspace.show() + appView.obj_workspace.calledFromApplicationToAssignSysAndApp(sys,app)#`11 ,cond) + #with cond: + #cond.wait() + + t = time.time() while time.time() < t + 0.1: app.processEvents() - time.sleep(2) + #time.sleep(2) - appView = Application() - appView.show() + #appView = Application() + #appView.hide() splash.finish(appView) - sys.exit(app.exec_()) - """ - appView = Application() + #sys.exit(app.exec_()) + #QtGui.QApplication.setStyle(QtGui.QStyleFactory.create("Cleanlooks")) - appView.show() - sys.exit(app.exec_()) + #appView.obj_workspace.returnWhetherClickedOrNot(appView) + #appView.obj_workspace.show() + #appView.hide() + appView.show() + sys.exit(app.exec_())""" +###################################################################################################################################################### diff --git a/src/frontEnd/DockArea.py b/src/frontEnd/DockArea.py index e87fea99..fcaf1f0f 100644 --- a/src/frontEnd/DockArea.py +++ b/src/frontEnd/DockArea.py @@ -51,7 +51,7 @@ class DockArea(QtGui.QMainWindow): """ #CSS dock['Tips-'+str(count)].setStyleSheet(" \ - QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ + .QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ ") """ @@ -86,7 +86,7 @@ class DockArea(QtGui.QMainWindow): """ #CSS dock['Plotting-'+str(count)].setStyleSheet(" \ - QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ + .QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ ") """ dock['Plotting-'+str(count)].setVisible(True) @@ -119,13 +119,12 @@ class DockArea(QtGui.QMainWindow): dock['NgSpice-'+str(count)].setWidget(self.ngspiceWidget) self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock['NgSpice-'+str(count)]) self.tabifyDockWidget(dock['Welcome'],dock['NgSpice-'+str(count)]) - - """ + #CSS dock['NgSpice-'+str(count)].setStyleSheet(" \ - QWidget { border-radius: 15px; border: 1px solid gray; padding: 0px; width: 200px; height: 150px; } \ + .QWidget { border-radius: 15px; border: 1px solid gray; padding: 0px; width: 200px; height: 150px; } \ ") - """ + dock['NgSpice-'+str(count)].setVisible(True) dock['NgSpice-'+str(count)].setFocus() dock['NgSpice-'+str(count)].raise_() @@ -148,6 +147,11 @@ class DockArea(QtGui.QMainWindow): self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock['Model Editor-'+str(count)]) self.tabifyDockWidget(dock['Welcome'],dock['Model Editor-'+str(count)]) + #CSS + dock['Model Editor-'+str(count)].setStyleSheet(" \ + .QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ + ") + dock['Model Editor-'+str(count)].setVisible(True) dock['Model Editor-'+str(count)].setFocus() dock['Model Editor-'+str(count)].raise_() @@ -169,12 +173,12 @@ class DockArea(QtGui.QMainWindow): dock['Subcircuit-'+str(count)].setWidget(self.subcktWidget) self.addDockWidget(QtCore.Qt.TopDockWidgetArea, dock['Subcircuit-'+str(count)]) self.tabifyDockWidget(dock['Welcome'],dock['Subcircuit-'+str(count)]) - """ + #CSS - dock['Plotting-'+str(count)].setStyleSheet(" \ - QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ + dock['Subcircuit-'+str(count)].setStyleSheet(" \ + .QWidget { border-radius: 15px; border: 1px solid gray; padding: 5px; width: 200px; height: 150px; } \ ") - """ + dock['Subcircuit-'+str(count)].setVisible(True) dock['Subcircuit-'+str(count)].setFocus() dock['Subcircuit-'+str(count)].raise_() diff --git a/src/frontEnd/Workspace.py b/src/frontEnd/Workspace.py index 035a8688..cd44dd71 100644 --- a/src/frontEnd/Workspace.py +++ b/src/frontEnd/Workspace.py @@ -17,7 +17,7 @@ #=============================================================================== from PyQt4 import QtCore, QtGui from configuration.Appconfig import Appconfig - +import time import os @@ -48,7 +48,7 @@ class Workspace(QtGui.QWidget): self.note.append(self.obj_appconfig.workspace_text) self.workspace_label.setText("Workspace:") self.workspace_loc.setText(self.obj_appconfig.home) - + #Buttons self.browsebtn = QtGui.QPushButton('Browse') self.browsebtn.clicked.connect(self.browseLocation) @@ -76,8 +76,29 @@ class Workspace(QtGui.QWidget): def defaultWorkspace(self): print "Default location selected" + self.imp_var=1 self.obj_appconfig.print_info('Default workspace selected : ' + self.obj_appconfig.default_workspace["workspace"]) self.close() + var_appView.show() + time.sleep(1) + var_appView.splash.close() + + + + + def close(self, *args, **kwargs): + self.window_open_close=1 + self.close_var=1 + #with var_cond: + # var_cond.notify() + return QtGui.QWidget.close(self, *args, **kwargs) + + + def returnWhetherClickedOrNot(self,appView): + global var_appView + var_appView=appView + + def createWorkspace(self): print "Create workspace is called" @@ -91,7 +112,12 @@ class Workspace(QtGui.QWidget): else: os.mkdir(self.create_workspace) self.obj_appconfig.default_workspace["workspace"] = self.create_workspace - self.close() + self.imp_var=1 + self.close() + var_appView.show() + time.sleep(1) + var_appView.splash.close() + def browseLocation(self): print "Browse Location called" diff --git a/src/kicadtoNgspice/Analysis.py b/src/kicadtoNgspice/Analysis.py index 7c237dde..27dc740f 100644 --- a/src/kicadtoNgspice/Analysis.py +++ b/src/kicadtoNgspice/Analysis.py @@ -422,7 +422,10 @@ class Analysis(QtGui.QWidget): self.start_combobox.addItem("ns") self.start_combobox.addItem("ps") self.trgrid.addWidget(self.start_combobox,1,3) - self.tran_parameter[self.parameter_cnt]= "Sec" + try: + self.tran_parameter[self.parameter_cnt]= str(root[2][3].text) + except: + self.tran_parameter[self.parameter_cnt]= "Sec" self.start_combobox.activated[str].connect(self.start_combo_change) self.parameter_cnt= self.parameter_cnt+1 @@ -433,7 +436,10 @@ class Analysis(QtGui.QWidget): self.step_combobox.addItem("ns") self.step_combobox.addItem("ps") self.trgrid.addWidget(self.step_combobox,2,3) - self.tran_parameter[self.parameter_cnt]= "Sec" + try: + self.tran_parameter[self.parameter_cnt]= str(root[2][4].text) + except: + self.tran_parameter[self.parameter_cnt]= "Sec" self.step_combobox.activated[str].connect(self.step_combo_change) self.parameter_cnt= self.parameter_cnt+1 @@ -444,7 +450,10 @@ class Analysis(QtGui.QWidget): self.stop_combobox.addItem("ns") self.stop_combobox.addItem("ps") self.trgrid.addWidget(self.stop_combobox,3,3) - self.tran_parameter[self.parameter_cnt]= "Sec" + try: + self.tran_parameter[self.parameter_cnt]= str(root[2][5].text) + except: + self.tran_parameter[self.parameter_cnt]= "Sec" self.stop_combobox.activated[str].connect(self.stop_combo_change) self.parameter_cnt= self.parameter_cnt+1 diff --git a/src/kicadtoNgspice/Convert.py b/src/kicadtoNgspice/Convert.py index baf842d9..3b87e863 100644 --- a/src/kicadtoNgspice/Convert.py +++ b/src/kicadtoNgspice/Convert.py @@ -227,8 +227,24 @@ class Convert: modelParamValue.append([line[0],addmodelLine,line[4]]) addmodelLine=".model "+line[3]+"_secondary lcouple (num_turns ="+num_turns2+ ")" modelParamValue.append([line[0],addmodelLine,line[4]]) - except: + except Exception as e: print "Caught an exception in transfo model ",line[1] + print "Exception Message : ",str(e) + + elif line[2] == 'ic': + try: + start=line[5] + end=line[6] + for key,value in line[9].iteritems(): + initVal = str(self.obj_track.model_entry_var[value].text()) + if initVal=="":initVal="0" + node = line[1].split()[1] #Extracting node from model line + addmodelLine = ".ic v("+node+")="+initVal + modelParamValue.append([line[0],addmodelLine,line[4]]) + except Exception as e: + print "Caught an exception in initial condition ",line[1] + print "Exception Message : ",str(e) + else: try: @@ -264,21 +280,24 @@ class Convert: addmodelLine += param+"="+paramVal+" " - - - + addmodelLine += ") " modelParamValue.append([line[0],addmodelLine,line[4]]) - except: - print "Caught an exception in gain model ",line[1] + except Exception as e: + print "Caught an exception in model ",line[1] + print "Exception Message : ",str(e) #Adding it to schematic for item in modelParamValue: - schematicInfo.append(item[2]) #Adding Comment - schematicInfo.append(item[1]) #Adding model line - + if ".ic" in item[1]: + schematicInfo.insert(0,item[1]) + schematicInfo.insert(0,item[2]) + else: + schematicInfo.append(item[2]) #Adding Comment + schematicInfo.append(item[1]) #Adding model line + print "MYSCH------->",schematicInfo return schematicInfo def addDeviceLibrary(self,schematicInfo,kicadFile): diff --git a/src/kicadtoNgspice/KicadtoNgspice.py b/src/kicadtoNgspice/KicadtoNgspice.py index c9b5ac02..c3e9d637 100644 --- a/src/kicadtoNgspice/KicadtoNgspice.py +++ b/src/kicadtoNgspice/KicadtoNgspice.py @@ -544,7 +544,7 @@ class MainWindow(QtGui.QWidget): try: f = open(self.project+".cir.out") except : - print("Error in opening circuit file.") + print("Error in opening .cir.out file.") else: print self.projName + ".cir.out does not exist. Please create a spice netlist." diff --git a/src/kicadtoNgspice/Model.py b/src/kicadtoNgspice/Model.py index 984c47f0..d1edd5a6 100644 --- a/src/kicadtoNgspice/Model.py +++ b/src/kicadtoNgspice/Model.py @@ -15,7 +15,9 @@ class Model(QtGui.QWidget): def __init__(self,schematicInfo,modelList): + QtGui.QWidget.__init__(self) + #Processing for getting previous values kicadFile = sys.argv[1] (projpath,filename)=os.path.split(kicadFile) project_name=os.path.basename(projpath) @@ -33,7 +35,7 @@ class Model(QtGui.QWidget): print "Empty XML" - QtGui.QWidget.__init__(self) + #Creating track widget object self.obj_trac = TrackWidget.TrackWidget() @@ -124,7 +126,7 @@ class Model(QtGui.QWidget): #This keeps the track of Model Tab Widget self.obj_trac.modelTrack.append([line[0],line[1],line[2],line[3],line[4],line[5],line[6],self.start,self.end,tag_dict]) - + print "The tag dictionary : ",tag_dict diff --git a/src/kicadtoNgspice/Processing.py b/src/kicadtoNgspice/Processing.py index fa75320f..67e7dc9d 100644 --- a/src/kicadtoNgspice/Processing.py +++ b/src/kicadtoNgspice/Processing.py @@ -159,8 +159,10 @@ class PrcocessNetlist: for compline in schematicInfo: words = compline.split() compName = words[0] + print "Compline----------------->",compline + print "compName-------------->",compName # Find the IC from schematic - if compName[0]=='u': + if compName[0]=='u' or compName[0] == 'U': # Find the component from the circuit index=schematicInfo.index(compline) compType=words[len(words)-1]; @@ -174,7 +176,7 @@ class PrcocessNetlist: print "Words",words print "compName",compName #Looking if model file is present - if compType != "port": + if compType != "port" and compType != "ic": xmlfile = compType+".xml" #XML Model File count = 0 #Check if model of same name is present modelPath = [] @@ -281,11 +283,22 @@ class PrcocessNetlist: comment = "* Schematic Name: "+compType+", NgSpice Name: "+modelname #Here instead of adding compType(use for XML), added modelName(Unique Model Name) modelList.append([index,compline,modelname,compName,comment,title,type,paramDict]) - except: + except Exception as e: print "Unable to parse the model, Please check your your XML file" + print "Exception Message : ",str(e) sys.exit(2) + elif compType == "ic": + schematicInfo.insert(index,"* "+compline) + modelname = "ic" + comment = "* "+compline + title = "Initial Condition for "+compName + type = "NA" #Its is not model + text = "Enter initial voltage at node for "+compline + paramDict[title] = text + modelList.append([index,compline,modelname,compName,comment,title,type,paramDict]) else: schematicInfo.insert(index,"* "+compline) + #print "Count",count #print "UnknownModelList",unknownModelList #print "MultipleModelList",multipleModelList diff --git a/src/ngspiceSimulation/NgspiceWidget.py b/src/ngspiceSimulation/NgspiceWidget.py index f2ad973f..2dcb4f89 100644 --- a/src/ngspiceSimulation/NgspiceWidget.py +++ b/src/ngspiceSimulation/NgspiceWidget.py @@ -18,7 +18,7 @@ class NgspiceWidget(QtGui.QWidget): if platform.system() == 'Linux': self.command = "cd "+projPath+";ngspice "+command #Creating argument for process - self.args = ['-into', str(self.terminal.winId()),'-hold','-e', self.command] + self.args = ['-geometry','200x200','-into', str(self.terminal.winId()),'-hold','-e', self.command] self.process.start('xterm', self.args) elif platform.system() == 'Windows': diff --git a/src/projManagement/Kicad.py b/src/projManagement/Kicad.py index d7202b4f..fdaa3187 100644 --- a/src/projManagement/Kicad.py +++ b/src/projManagement/Kicad.py @@ -138,7 +138,7 @@ class Kicad: self.project = os.path.join(self.projDir,self.projName) #Creating a command to run - self.cmd = "python ../kicadtoNgspice/KicadtoNgspice.py "+self.project+".cir " + self.cmd = "python ../kicadtoNgspice/KicadtoNgspice.py " +self.project+".cir " self.obj_workThread = Worker.WorkerThread(self.cmd) self.obj_workThread.start() |