From 94dc87d3532af71dfd7748cbfb096dafa6b0cdb5 Mon Sep 17 00:00:00 2001 From: komalsheth236 Date: Wed, 8 Apr 2015 12:34:50 +0530 Subject: [PATCH 1/2] cc --- src/projManagement/openKicad.pyc | Bin 1189 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/projManagement/openKicad.pyc diff --git a/src/projManagement/openKicad.pyc b/src/projManagement/openKicad.pyc deleted file mode 100644 index 04f934d3cf0cfac332caff474f6c757d1e80913f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1189 zcmcgr%}T^D5Kh~5br(Ddih`134`M-&iinFp;1ALYVlN>i(XF;kX|jhs>l^rpK7udc zOj^5wCvmZDrjzOP`@R__!N>COZR`D3koF4TeFV#_fsyb8M0(_vkQYMkQ`q|?348F( zE`Yhn1ee{v9z>2|nO!i7kkmtj)Nc_|fbtP4?IA2W3q?)+0p@QeRk~7^g)-gxT%K(Q(bfg;)_?7UjPWY+T zmR5CET6!WgtLuMLkIasE^SA0(JN3;N{YTG-z==I?8E2BiMey4(DtVz8vzW_Rq2(mU zEhaD~wO}m9xry Date: Wed, 8 Apr 2015 14:21:39 +0530 Subject: [PATCH 2/2] Analysis --- src/configuration/Appconfig.pyc | Bin 1303 -> 1306 bytes src/configuration/__init__.pyc | Bin 144 -> 144 bytes src/frontEnd/ViewManagement.pyc | Bin 3139 -> 3145 bytes src/frontEnd/Workspace.pyc | Bin 3469 -> 3476 bytes src/frontEnd/data.txt | 1 + src/kicadtoNgspice/Analysis.py | 383 +++++++++++++++----------- src/kicadtoNgspice/Analysis.pyc | Bin 4527 -> 11665 bytes src/kicadtoNgspice/Convert.py | 55 +++- src/kicadtoNgspice/Convert.pyc | Bin 0 -> 6599 bytes src/kicadtoNgspice/KicadtoNgspice.py | 14 +- src/kicadtoNgspice/KicadtoNgspice.pyc | Bin 3961 -> 4316 bytes src/kicadtoNgspice/Processing.py | 4 +- src/kicadtoNgspice/Processing.pyc | Bin 0 -> 6466 bytes src/kicadtoNgspice/Source.py | 3 +- src/kicadtoNgspice/Source.pyc | Bin 0 -> 3676 bytes src/kicadtoNgspice/TrackWidget.py | 12 +- src/kicadtoNgspice/TrackWidget.pyc | Bin 0 -> 818 bytes src/kicadtoNgspice/__init__.pyc | Bin 144 -> 145 bytes src/projManagement/Kicad.pyc | Bin 4085 -> 4092 bytes src/projManagement/Validation.pyc | Bin 1988 -> 1995 bytes src/projManagement/Worker.pyc | Bin 1257 -> 1263 bytes src/projManagement/__init__.pyc | Bin 145 -> 145 bytes src/projManagement/newProject.pyc | Bin 3836 -> 3842 bytes src/projManagement/openProject.pyc | Bin 1731 -> 1735 bytes 24 files changed, 292 insertions(+), 180 deletions(-) create mode 100644 src/frontEnd/data.txt create mode 100644 src/kicadtoNgspice/Convert.pyc create mode 100644 src/kicadtoNgspice/Processing.pyc create mode 100644 src/kicadtoNgspice/Source.pyc create mode 100644 src/kicadtoNgspice/TrackWidget.pyc diff --git a/src/configuration/Appconfig.pyc b/src/configuration/Appconfig.pyc index 2229b8596effe7145168eb3f7a3788d9f38edd62..49b2992da1c078bb2c92503716f0a7fd1edb6121 100644 GIT binary patch delta 93 zcmbQvHH(X#`7LC{L diff --git a/src/configuration/__init__.pyc b/src/configuration/__init__.pyc index e99acbcfc182f592c5fef3e61c92fef5fff0b5ae..61b750c6fdf3bef40cee4194d665f6f2c00ec827 100644 GIT binary patch delta 37 scmbQhIDwIa`7Y&qU_>=#N<@{)QOSi0LeiMzW@LL delta 37 scmbQhIDwIa`7`r-LS*~JBk$*KCO$rB^Z0ppsaZ-YV`7>oPsYBDGnO gIhPHKI9SUW&cnE*&T@s|l8Wc<#4e>XS(Qf)0P7Sppaae+b`7W6P;WD>w4JeiS6cXI%< g0~@9ekksV!oQHA9T;vMDA(O)0iB(2tvNn$#0EXZ&BLDyZ diff --git a/src/frontEnd/Workspace.pyc b/src/frontEnd/Workspace.pyc index 6e876bf33bb084c781c2521e311b026e66956127..f4c35f57309cdc114d7257e6208abf9ca72d47a1 100644 GIT binary patch delta 201 zcmeB`o+8b`{F#@_L_;ccBgc70AyWnh2K|iu+*JLv{Nm!&RQ>YFTpSvk1(;s4VwZb` jU07qYE@vrD<8E_t;F6mx!;_7}$jJwIDzQm<@j3$lP)|92 delta 198 zcmbOt-7C$({F#?)+q7>X8#&H13Ysu5Fz9FG=cekXC1zyi>W5DbFhxHtTbi;WF$qGC<*v*@Kl&1=-j57eFl{tn0 diff --git a/src/frontEnd/data.txt b/src/frontEnd/data.txt new file mode 100644 index 000000000..19c90dd33 --- /dev/null +++ b/src/frontEnd/data.txt @@ -0,0 +1 @@ +.trans \ No newline at end of file diff --git a/src/kicadtoNgspice/Analysis.py b/src/kicadtoNgspice/Analysis.py index 4ab5291b8..f1c1ab1b3 100644 --- a/src/kicadtoNgspice/Analysis.py +++ b/src/kicadtoNgspice/Analysis.py @@ -1,47 +1,33 @@ from PyQt4 import QtGui,QtCore -from numpy import partition from PyQt4.Qt import QRect -#import GroupBox +import TrackWidget class Analysis(QtGui.QWidget): def __init__(self): QtGui.QWidget.__init__(self) + self.track_obj= TrackWidget.TrackWidget() + self.count =0 + self.parameter_cnt=0 + self.ac_entry_var={} + self.dc_entry_var={} + self.tran_entry_var={} + self.ac_parameter={} + self.dc_parameter={} + self.tran_parameter= {} self.createAnalysisWidget() - + + def createAnalysisWidget(self): self.grid = QtGui.QGridLayout() - self.grid.addWidget(self.createCheckBobx(),0,0) + self.grid.addWidget(self.createCheckBox(),0,0) self.grid.addWidget(self.createACgroup(),1,0) self.grid.addWidget(self.createDCgroup(),2,0) self.grid.addWidget(self.createTRANgroup(),3,0) - - ''' - self.grid.addWidget(self.createTRANgroup(),3,0) - self.grid.addWidget(self.createTRANgroup(),4,0) - self.grid.addWidget(self.createTRANgroup(),5,0) - self.grid.addWidget(self.createTRANgroup(),6,0) - self.grid.addWidget(self.createTRANgroup(),7,0) - self.grid.addWidget(self.createTRANgroup(),8,0) - self.grid.addWidget(self.createTRANgroup(),9,0) - self.grid.addWidget(self.createTRANgroup(),10,0) - self.grid.addWidget(self.createTRANgroup(),11,0) - self.grid.addWidget(self.createTRANgroup(),12,0) - self.grid.addWidget(self.createTRANgroup(),13,0) - self.grid.addWidget(self.createTRANgroup(),14,0) - self.grid.addWidget(self.createTRANgroup(),15,0) - self.grid.addWidget(self.createTRANgroup(),16,0) - self.grid.addWidget(self.createTRANgroup(),17,0) - self.grid.addWidget(self.createTRANgroup(),18,0) - self.grid.addWidget(self.createTRANgroup(),19,0) - self.grid.addWidget(self.createTRANgroup(),20,0) - ''' - self.setLayout(self.grid) self.show() - - - def createCheckBobx(self): + + def createCheckBox(self): self.checkbox = QtGui.QGroupBox() self.checkbox.setTitle("Select Analysis Type") self.checkgrid = QtGui.QGridLayout() @@ -60,8 +46,7 @@ def createCheckBobx(self): self.checkgrid.addWidget(self.checkDC,0,1) self.checkgrid.addWidget(self.checkTRAN,0,2) self.checkbox.setLayout(self.checkgrid) - - + #CSS ''' self.checkbox.setStyleSheet(" \ @@ -69,126 +54,160 @@ def createCheckBobx(self): QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \ ") ''' - return self.checkbox - #return self.checkgroupbtn def enableBox(self): if self.checkAC.isChecked(): self.acbox.setDisabled(False) self.dcbox.setDisabled(True) self.trbox.setDisabled(True) + self.track_obj.set_CheckBox["ITEMS"]="AC" + elif self.checkDC.isChecked(): self.dcbox.setDisabled(False) self.acbox.setDisabled(True) self.trbox.setDisabled(True) - + self.track_obj.set_CheckBox["ITEMS"]="DC" + elif self.checkTRAN.isChecked(): self.trbox.setDisabled(False) self.acbox.setDisabled(True) self.dcbox.setDisabled(True) - - + self.track_obj.set_CheckBox["ITEMS"]="TRAN" + def createACgroup(self): self.acbox = QtGui.QGroupBox() self.acbox.setTitle("AC Analysis") self.acgrid = QtGui.QGridLayout() + self.radiobuttongroup= QtGui.QButtonGroup() self.Lin = QtGui.QRadioButton("Lin") self.Dec = QtGui.QRadioButton("Dec") self.Oct = QtGui.QRadioButton("Oct") + self.radiobuttongroup.addButton(self.Lin) + self.radiobuttongroup.addButton(self.Dec) + self.radiobuttongroup.addButton(self.Oct) + self.radiobuttongroup.setExclusive(True) + self.radiobuttongroup.buttonClicked.connect(self.set_ac_type) self.acgrid.addWidget(self.Lin,1,1) self.acgrid.addWidget(self.Dec,1,2) self.acgrid.addWidget(self.Oct,1,3) self.acbox.setDisabled(True) self.acbox.setLayout(self.acgrid) - - self.Scale = QtGui.QLabel("Scale") - self.Start_Frequency = QtGui.QLabel("Start Frequency") - self.Stop_Frequency = QtGui.QLabel("Stop Frequency") - self.No_of_Points = QtGui.QLabel("No.of Points") - #self.Scale.setMaximumWidth(150) - #self.Start_Frequency.setMaximumWidth(150) - #self.Stop_Frequency.setMaximumWidth(150) - #self.No_of_Points.setMaximumWidth(150) - self.acgrid.addWidget(self.Scale,1,0) - self.acgrid.addWidget(self.Start_Frequency,2,0) - self.acgrid.addWidget(self.Stop_Frequency,3,0) - self.acgrid.addWidget(self.No_of_Points,4,0) - - self.Start_Frequency = QtGui.QLineEdit(self) - self.Stop_Frequency = QtGui.QLineEdit() - self.No_of_Points = QtGui.QLineEdit() - self.acgrid.addWidget(self.Start_Frequency,2,1) - self.acgrid.addWidget(self.Stop_Frequency,3,1) - self.acgrid.addWidget(self.No_of_Points,4,1) - self.Start_Frequency.setMaximumWidth(150) - self.Stop_Frequency.setMaximumWidth(150) - self.No_of_Points.setMaximumWidth(150) - - #self.lineEdit1.setGeometry() - - self.Start_Frequency = QtGui.QComboBox() - self.Start_Frequency.addItem("Hz",) - self.Start_Frequency.addItem("KHz") - self.Start_Frequency.addItem("MHz") - self.Start_Frequency.addItem("GHz") - self.Start_Frequency.addItem("THz") - #self.Start_Frequency.setMaximumWidth(150) - self.acgrid.addWidget(self.Start_Frequency,2,2) - self.Stop_Frequency = QtGui.QComboBox() - self.Stop_Frequency.addItem("Hz") - self.Stop_Frequency.addItem("KHz") - self.Stop_Frequency.addItem("MHz") - self.Stop_Frequency.addItem("GHz") - self.Stop_Frequency.addItem("THz") - self.Stop_Frequency.setMaximumWidth(150) - self.acgrid.addWidget(self.Stop_Frequency,3,2) - - - - - + + self.scale = QtGui.QLabel("Scale") + self.start_fre_lable = QtGui.QLabel("Start Frequency") + self.stop_fre_lable = QtGui.QLabel("Stop Frequency") + self.no_of_points = QtGui.QLabel("No.of Points") + self.acgrid.addWidget(self.scale,1,0) + self.acgrid.addWidget(self.start_fre_lable,2,0) + self.acgrid.addWidget(self.stop_fre_lable,3,0) + self.acgrid.addWidget(self.no_of_points,4,0) + + self.count=0 + self.ac_entry_var[self.count] = QtGui.QLineEdit() + self.acgrid.addWidget(self.ac_entry_var[self.count],2,1) + self.ac_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.ac_entry_var[self.count] = QtGui.QLineEdit() + self.acgrid.addWidget(self.ac_entry_var[self.count],3,1) + self.ac_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.ac_entry_var[self.count] = QtGui.QLineEdit() + self.acgrid.addWidget(self.ac_entry_var[self.count],4,1) + self.ac_entry_var[self.count].setMaximumWidth(150) + + self.parameter_cnt=0 + self.start_fre_combo = QtGui.QComboBox() + self.start_fre_combo.addItem("Hz",) + self.start_fre_combo.addItem("KHz") + self.start_fre_combo.addItem("MHz") + self.start_fre_combo.addItem("GHz") + self.start_fre_combo.addItem("THz") + self.start_fre_combo.setMaximumWidth(150) + self.acgrid.addWidget(self.start_fre_combo,2,2) + self.ac_parameter[self.parameter_cnt]= self.start_fre_combo.currentText() + self.start_fre_combo.activated[str].connect(self.start_combovalue) + + self.parameter_cnt=self.parameter_cnt + 1 + self.stop_fre_combo = QtGui.QComboBox() + self.stop_fre_combo.addItem("Hz") + self.stop_fre_combo.addItem("KHz") + self.stop_fre_combo.addItem("MHz") + self.stop_fre_combo.addItem("GHz") + self.stop_fre_combo.addItem("THz") + self.stop_fre_combo.setMaximumWidth(150) + self.acgrid.addWidget(self.stop_fre_combo,3,2) + self.ac_parameter[self.parameter_cnt]= self.stop_fre_combo.currentText() + self.stop_fre_combo.activated[str].connect(self.stop_combovalue) + + self.track_obj.AC_entry_var["ITEMS"]=self.ac_entry_var + self.track_obj.AC_Parameter["ITEMS"]=self.ac_parameter #CSS self.acbox.setStyleSheet(" \ QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \ QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \ - ") - + ") return self.acbox + def start_combovalue(self, text): + self.ac_parameter[self.parameter_cnt]= str(text) + + def stop_combovalue(self, text): + self.ac_parameter[self.parameter_cnt+1]= str(text) + + def set_ac_type(self): + self.parameter_cnt=0 + if self.Lin.isChecked(): + self.track_obj.AC_type["ITEMS"]="lin" + elif self.Dec.isChecked(): + self.track_obj.AC_type["ITEMS"]= "dec" + elif self.Oct.isChecked(): + self.track_obj.AC_type["ITEMS"]="oct" + else: + pass + print "AC type is ", self.Lin.isChecked + def createDCgroup(self): self.dcbox = QtGui.QGroupBox() self.dcbox.setTitle("DC Analysis") self.dcgrid = QtGui.QGridLayout() - #self.dcgrid.setGeometry(self, QRect) - #self.partition= QtGui.QHBoxLayout() - #self.dcgrid.addWidget(partition,0,0) - #self.dcgrid.setHorizontalSpacing(60) - - #self.btn3 = QtGui.QRadioButton("Radio button 3") - #self.simulation_button = QtGui.QPushButton("Add Simulation Data") - #self.dcgrid.addWidget(self.btn3,0,0) - #self.dcgrid.addWidget(self.btn4,0,1) self.dcbox.setDisabled(True) self.dcbox.setLayout(self.dcgrid) self.source_name= QtGui.QLabel('Enter Source Name',self) self.source_name.setMaximumWidth(150) - self.start= QtGui.QLabel('Start', self) + self.start= QtGui.QLabel('start', self) self.start.setMaximumWidth(150) self.increment=QtGui.QLabel('Increment',self) self.increment.setMaximumWidth(150) - self.stop=QtGui.QLabel('Stop',self) + self.stop=QtGui.QLabel('stop',self) self.stop.setMaximumWidth(150) - self.start_spin= QtGui.QSpinBox() - self.increment_spin= QtGui.QSpinBox() - self.stop_spin= QtGui.QSpinBox() - self.inputbox=QtGui.QLineEdit(self) - self.inputbox.setMaximumWidth(200) - self.check=QtGui.QCheckBox('Operating Point Analysis',self) + self.dcgrid.addWidget(self.source_name,1,0) + self.dcgrid.addWidget(self.start,2,0) + self.dcgrid.addWidget(self.increment,3,0) + self.dcgrid.addWidget(self.stop,4,0) + + self.count=0 + self.dc_entry_var[self.count] = QtGui.QLineEdit() + self.dcgrid.addWidget(self.dc_entry_var[self.count],1,1) + self.dc_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.dc_entry_var[self.count] = QtGui.QLineEdit() + self.dcgrid.addWidget(self.dc_entry_var[self.count],2,1) + self.dc_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.dc_entry_var[self.count] = QtGui.QLineEdit() + self.dcgrid.addWidget(self.dc_entry_var[self.count],3,1) + self.dc_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.dc_entry_var[self.count] = QtGui.QLineEdit() + self.dcgrid.addWidget(self.dc_entry_var[self.count],4,1) + self.dc_entry_var[self.count].setMaximumWidth(150) + + self.parameter_cnt=0 self.start_combo=QtGui.QComboBox(self) self.start_combo.setMaximumWidth(150) self.start_combo.addItem('volts or Amperes') @@ -196,6 +215,10 @@ def createDCgroup(self): self.start_combo.addItem('uV or uA') self.start_combo.addItem("nV or nA") self.start_combo.addItem("pV or pA") + self.dcgrid.addWidget(self.start_combo,2,2) + self.dc_parameter[self.parameter_cnt]= self.start_combo.currentText() + self.start_combo.activated[str].connect(self.start_changecombo) + self.parameter_cnt= self.parameter_cnt+1 self.increment_combo=QtGui.QComboBox(self) self.increment_combo.setMaximumWidth(150) @@ -204,6 +227,10 @@ def createDCgroup(self): self.increment_combo.addItem("uV or uA") self.increment_combo.addItem("nV or nA") self.increment_combo.addItem("pV or pA") + self.dcgrid.addWidget(self.increment_combo,3,2) + self.dc_parameter[self.parameter_cnt]= str(self.increment_combo.currentText()) + self.increment_combo.activated[str].connect(self.increment_changecombo) + self.parameter_cnt= self.parameter_cnt+1 self.stop_combo=QtGui.QComboBox(self) self.stop_combo.setMaximumWidth(150) @@ -212,95 +239,115 @@ def createDCgroup(self): self.stop_combo.addItem("uV or uA") self.stop_combo.addItem("nV or nA") self.stop_combo.addItem("pV or pA") - - self.dcgrid.addWidget(self.source_name,1,0) - self.dcgrid.addWidget(self.inputbox,1,1) - - self.dcgrid.addWidget(self.start,2,0) - self.dcgrid.addWidget(self.start_spin,2,1) - self.dcgrid.addWidget(self.start_combo,2,2) - - self.dcgrid.addWidget(self.increment,3,0) - self.dcgrid.addWidget(self.increment_spin,3,1) - self.dcgrid.addWidget(self.increment_combo,3,2) - - self.dcgrid.addWidget(self.stop,4,0) - self.dcgrid.addWidget(self.stop_spin,4,1) self.dcgrid.addWidget(self.stop_combo,4,2) + self.stop_combo.activated[str].connect(self.stop_changecombo) + self.dc_parameter[self.parameter_cnt]= str(self.stop_combo.currentText()) + self.parameter_cnt= self.parameter_cnt+1 + self.check=QtGui.QCheckBox('Operating Point Analysis',self) + if(self.check.isChecked()): + self.flagcheck = 1 + + else: + self.flagcheck= 2 self.dcgrid.addWidget(self.check,5,1,5,2) - #self.dcgrid.addWidget(self.simulation_button,6,1,6,2)''' - - - + self.track_obj.DC_entry_var["ITEMS"]=self.dc_entry_var + self.track_obj.DC_Parameter["ITEMS"]=self.dc_parameter #CSS self.dcbox.setStyleSheet(" \ QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \ QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \ ") - - return self.dcbox + def start_changecombo(self,text): + self.parameter_cnt=0 + self.dc_parameter[self.parameter_cnt]=text + + def increment_changecombo(self,text): + self.dc_parameter[self.parameter_cnt+1]=text + + def stop_changecombo(self,text): + self.dc_parameter[self.parameter_cnt+2]=text + def createTRANgroup(self): self.trbox = QtGui.QGroupBox() self.trbox.setTitle("Transient Analysis") self.trgrid = QtGui.QGridLayout() - #self.btn5 = QtGui.QRadioButton("Radio button 5") - #self.btn6 = QtGui.QRadioButton("Radio button 6") - #self.trgrid.addWidget(self.btn5,0,0) - #self.trgrid.addWidget(self.btn6,0,1) self.trbox.setDisabled(True) self.trbox.setLayout(self.trgrid) - self.Start_Time = QtGui.QLabel("Start Time") - self.Step_Time = QtGui.QLabel("Step Time") - self.Stop_Time = QtGui.QLabel("Stop Time") - self.trgrid.addWidget(self.Start_Time,1,0) - self.trgrid.addWidget(self.Step_Time,2,0) - self.trgrid.addWidget(self.Stop_Time,3,0) - - self.Start_Time = QtGui.QLineEdit() - self.Step_Time = QtGui.QLineEdit() - self.Stop_Time = QtGui.QLineEdit() - self.trgrid.addWidget(self.Start_Time,1,1) - self.trgrid.addWidget(self.Step_Time,2,1) - self.trgrid.addWidget(self.Stop_Time,3,1) - - self.Start_Time = QtGui.QComboBox() - self.Start_Time.addItem("Sec") - self.Start_Time.addItem("ms") - self.Start_Time.addItem("us") - self.Start_Time.addItem("ns") - self.Start_Time.addItem("ps") - self.trgrid.addWidget(self.Start_Time,1,2) - - self.Step_Time = QtGui.QComboBox() - self.Step_Time.addItem("Sec") - self.Step_Time.addItem("ms") - self.Step_Time.addItem("us") - self.Step_Time.addItem("ns") - self.Step_Time.addItem("ps") - self.trgrid.addWidget(self.Step_Time,2,2) - - self.Stop_Time = QtGui.QComboBox() - self.Stop_Time.addItem("Sec") - self.Stop_Time.addItem("ms") - self.Stop_Time.addItem("us") - self.Stop_Time.addItem("ns") - self.Stop_Time.addItem("ps") - self.trgrid.addWidget(self.Stop_Time,3,2) - - - + self.start = QtGui.QLabel("start Time") + self.step = QtGui.QLabel("Step Time") + self.stop = QtGui.QLabel("stop Time") + self.trgrid.addWidget(self.start,1,0) + self.trgrid.addWidget(self.step,2,0) + self.trgrid.addWidget(self.stop,3,0) + self.count=0 + + self.tran_entry_var[self.count] = QtGui.QLineEdit() + self.trgrid.addWidget(self.tran_entry_var[self.count],1,1) + self.tran_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.tran_entry_var[self.count] = QtGui.QLineEdit() + self.trgrid.addWidget(self.tran_entry_var[self.count],2,1) + self.tran_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + self.tran_entry_var[self.count] = QtGui.QLineEdit() + self.trgrid.addWidget(self.tran_entry_var[self.count],3,1) + self.tran_entry_var[self.count].setMaximumWidth(150) + self.count= self.count+1 + + self.start_combobox = QtGui.QComboBox() + self.start_combobox.addItem("Sec") + self.start_combobox.addItem("ms") + self.start_combobox.addItem("us") + self.start_combobox.addItem("ns") + self.start_combobox.addItem("ps") + self.trgrid.addWidget(self.start_combobox,1,3) + self.tran_parameter[self.parameter_cnt]=self.start_combobox.currentText() + self.start_combobox.activated[str].connect(self.start_combo_change) + + self.step_combobox = QtGui.QComboBox() + self.step_combobox.addItem("Sec") + self.step_combobox.addItem("ms") + self.step_combobox.addItem("us") + self.step_combobox.addItem("ns") + self.step_combobox.addItem("ps") + self.trgrid.addWidget(self.step_combobox,2,3) + self.tran_parameter[self.parameter_cnt]=self.step_combobox.currentText() + self.step_combobox.activated[str].connect(self.step_combo_change) + + self.stop_combobox = QtGui.QComboBox() + self.stop_combobox.addItem("Sec") + self.stop_combobox.addItem("ms") + self.stop_combobox.addItem("us") + self.stop_combobox.addItem("ns") + self.stop_combobox.addItem("ps") + self.trgrid.addWidget(self.stop_combobox,3,3) + self.tran_parameter[self.parameter_cnt]=self.stop_combobox.currentText() + self.stop_combobox.activated[str].connect(self.stop_combo_change) + + self.track_obj.TRAN_entry_var["ITEMS"]=self.tran_entry_var + self.track_obj.TRAN_Parameter["ITEMS"]=self.tran_parameter + #CSS self.trbox.setStyleSheet(" \ QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \ QGroupBox::title { subcontrol-origin: margin; left: 10px; padding: 0 3px 0 3px; } \ ") - - return self.trbox \ No newline at end of file + return self.trbox + + def start_combo_change(self,text): + self.parameter_cnt=0 + self.tran_parameter[self.parameter_cnt]=text + + def step_combo_change(self,text): + self.tran_parameter[self.parameter_cnt+1]=text + + def stop_combo_change(self,text): + self.tran_parameter[self.parameter_cnt+2]=text \ No newline at end of file diff --git a/src/kicadtoNgspice/Analysis.pyc b/src/kicadtoNgspice/Analysis.pyc index 77f4d3ffc07cdc54a4588d67b2322f5177371e53..90aca8a626bea1ceebf919ab53050628b3901c42 100644 GIT binary patch literal 11665 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 rHrB$(uf~LTc{jFcKAS>q8qwwuFIH-ZZsQg#O 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 literal 0 HcmV?d00001 diff --git a/src/kicadtoNgspice/KicadtoNgspice.py b/src/kicadtoNgspice/KicadtoNgspice.py index 4af345fc1..c756dddfe 100644 --- a/src/kicadtoNgspice/KicadtoNgspice.py +++ b/src/kicadtoNgspice/KicadtoNgspice.py @@ -85,22 +85,28 @@ def callConvert(self): Calling Convert Class Constructor """ global schematicInfo + global analysisoutput self.obj_convert = Convert.Convert(self.obj_track.sourcelisttrack["ITEMS"], self.obj_track.entry_var["ITEMS"], schematicInfo) - #Adding Source Value to Schematic Info schematicInfo = self.obj_convert.addSourceParameter() + analysisoutput = self.obj_convert.analysisInsertor(self.obj_track.AC_entry_var["ITEMS"], + self.obj_track.DC_entry_var["ITEMS"], + self.obj_track.TRAN_entry_var["ITEMS"], + self.obj_track.set_CheckBox["ITEMS"], + self.obj_track.AC_Parameter["ITEMS"], + self.obj_track.DC_Parameter["ITEMS"], + self.obj_track.TRAN_Parameter["ITEMS"], + self.obj_track.AC_type["ITEMS"]) - - def main(args): print "==================================" print "Kicad to Ngspice netlist converter " print "==================================" global kicadFile,kicadNetlist,schematicInfo - kicadFile = "/home/fahim/eSim-Workspace/BJT_amplifier/BJT_amplifier.cir" + kicadFile = "/home/fossee/workspace/FreeEDA/Examples/BJT_amplifier/BJT_amplifier.cir" #kicadFile = sys.argv[1] #Object of Processing diff --git a/src/kicadtoNgspice/KicadtoNgspice.pyc b/src/kicadtoNgspice/KicadtoNgspice.pyc index 8e4cf3eb9d714a2095f950fb6ac3a19a73540a99..6efaa44b7d10fca6af5d0d9802fd9d04578f3006 100644 GIT binary patch delta 1086 zcmZ`&OK;Oa5T147$2zgo2d$_CrBGCYI7DhCK!O6HkF-*$Xi^CQl_J;PlDbVC+1sa5 zweV@8oMmyd;qcId6i%%blGz!bn1*F z-zVvYvwaY4MvILInIPm@B-_QAYOlUzW|M@C#A>;?{9jJQcy*@6+^wg6lB5Lp6umFsnM@|rQ44BY<3dRV8EB<~v`VQmBUEiWr9~;UnIv^4&KQ}b3X-vl zQ53gt?|&#=>dqhF)`h>pjjQfFFGUa>2|1j5?>X=0-j^SjPiA!amtFc2)Qc3O;nlm~-Vj|wf2T0UthBCE0g-@G{hYIxfH}5@2 zr$Lr`J$K9R9Ym>{?7OYxU=Tz|47z^17d`ZZcB24OFb|MffTSJo2Fdf6(IE4fs9XSu z>M5lEOqUFvr7!#-szxr#V~+t#JA(=XNxlr>pn=A`Kc zqOZk2S|1LF8ig7)a#akfgCJ<)8iu;KjG;j}wxSc#InbbyOgoaOq7)j?!_y2+5Cp>L z8^tY}g|Q@z8C+7~(nK{ZQ3I*dc5_8P>?JOXm1FTklQNq|=nZp;;)>ubb11G-Zc;qK zzn0rGw=lrpzd+RL_OEaM*%V*1-?JM3ZolH2mDkMT-zuxN4NDqyqQ0MX13u}jj9Jv1 w>OBAC80Yqcb^$<46_2DTro=xxOKh2+IP2OYR5s@LT6JpdA&=F&=FKwu4Yqli`Tzg` diff --git a/src/kicadtoNgspice/Processing.py b/src/kicadtoNgspice/Processing.py index 4dee94465..a9d9f9627 100644 --- a/src/kicadtoNgspice/Processing.py +++ b/src/kicadtoNgspice/Processing.py @@ -190,5 +190,5 @@ def insertSpecialSourceParam(self,schematicInfo,sourcelist): #print schematicInfo return schematicInfo,sourcelist - - \ No newline at end of file + #def analysisproc(self): + #fileread= open() \ No newline at end of file diff --git a/src/kicadtoNgspice/Processing.pyc b/src/kicadtoNgspice/Processing.pyc new file mode 100644 index 0000000000000000000000000000000000000000..88a791c462fd6aac1d44719e2084e33acebc0e90 GIT binary patch literal 6466 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 diff --git a/src/projManagement/Kicad.pyc b/src/projManagement/Kicad.pyc index 9d783b32c53e152444990d846fd6ca81911de6f1..6126be60bdb706197202b277764c38edca786675 100644 GIT binary patch delta 209 zcmew=|3{vk`7{9xZSF=k303`80+W-In delta 197 zcmX@je}tcd`7kvFyauwD~Pd2rdmxYYFiY(fbI~n7!OKDA3 eVw!+U>Mhem>{8m3cQJ=ymnz0CtTp*OixdDxRx?BZ delta 169 zcmaFQ`I3`^`7`r(t~89T9xYE4#Qnt(&* b1JgvTGTM{(F^A!h31soWDx)>|DvJ~Vm)tSb diff --git a/src/projManagement/__init__.pyc b/src/projManagement/__init__.pyc index f50153e3f7f7ea69d2eb69f8d07131745ddaffe4..d1faf657ee42e523ed9c0c3f3bf425b27f705c13 100644 GIT binary patch delta 37 scmbQpIFXTq`7Y&qU_>=#N<@{)QOQ60Lh9A!TWAkSWfvDDCa3DBCQppC008ty4MYF{ diff --git a/src/projManagement/newProject.pyc b/src/projManagement/newProject.pyc index 16e965d34187b1e1e39916bbc5b00d063ef40626..b353edf4a0bc11886c8129bfabd6e659170073ac 100644 GIT binary patch delta 177 zcmew(+a$-q{F#@_L_;ccBZmZ&kPQO^gMLPSZmND-esOVXs($%qL#8ffEaH<5ne;aQ hVohbkE~h_vKF<SoJn1FvT!qN^L&J hI++bq7^GwJLY}2KWZHNWamc9i)nb*=pZt_h764_4G@t+g diff --git a/src/projManagement/openProject.pyc b/src/projManagement/openProject.pyc index d9c56fee3b61cb3c4fe0d07320ab2aaeadd001bc..f907ed330d971e891774eb1484efac70c5186b9f 100644 GIT binary patch delta 122 zcmX@idz_bp`7