summaryrefslogtreecommitdiff
path: root/src/kicadtoNgspice/DeviceModel.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/kicadtoNgspice/DeviceModel.py')
-rw-r--r--src/kicadtoNgspice/DeviceModel.py78
1 files changed, 75 insertions, 3 deletions
diff --git a/src/kicadtoNgspice/DeviceModel.py b/src/kicadtoNgspice/DeviceModel.py
index 0ae421b6..56ffb7f1 100644
--- a/src/kicadtoNgspice/DeviceModel.py
+++ b/src/kicadtoNgspice/DeviceModel.py
@@ -1,4 +1,7 @@
from PyQt4 import QtGui
+import sys
+import os
+from xml.etree import ElementTree as ET
import TrackWidget
@@ -10,6 +13,25 @@ class DeviceModel(QtGui.QWidget):
"""
def __init__(self,schematicInfo):
+
+ kicadFile = sys.argv[1]
+ (projpath,filename)=os.path.split(kicadFile)
+ project_name=projpath.split("/")
+ project_name=project_name[len(project_name)-1]
+ print "PROJECT NAME---------",project_name
+ check=1
+ try:
+ f=open(os.path.join(projpath,project_name+"_Previous_Values.xml"),'r')
+ tree=ET.parse(f)
+ parent_root=tree.getroot()
+ for child in parent_root:
+ if child.tag=="devicemodel":
+ root=child
+ except:
+ check=0
+ print "Empty XML"
+
+
QtGui.QWidget.__init__(self)
#Creating track widget object
@@ -24,8 +46,8 @@ class DeviceModel(QtGui.QWidget):
self.widthLabel = {}
self.lengthLabel = {}
self.multifactorLable = {}
-
-
+ self.devicemodel_dict_beg={}
+ self.devicemodel_dict_end={}
#List to hold information about device
self.deviceDetail = {}
@@ -37,11 +59,22 @@ class DeviceModel(QtGui.QWidget):
words = eachline.split()
if eachline[0] == 'q':
print "Words ",words[0]
+ self.devicemodel_dict_beg[words[0]]=self.count
transbox=QtGui.QGroupBox()
transgrid=QtGui.QGridLayout()
transbox.setTitle("Add library for Transistor "+words[0]+" : "+words[4])
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
+ try:
+ for child in root:
+ if child.tag[0]==eachline[0] and child.tag[1]==eachline[1]:
+ #print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ try:
+ self.entry_var[self.count].setText(child[0].text)
+ except:
+ print "ERROR WHEN SET TEXT"
+ except:
+ pass
transgrid.addWidget(self.entry_var[self.count],self.row,1)
self.addbtn = QtGui.QPushButton("Add")
self.addbtn.setObjectName("%d" %self.count)
@@ -62,15 +95,27 @@ class DeviceModel(QtGui.QWidget):
#Increment row and widget count
self.row = self.row+1
+ self.devicemodel_dict_end[words[0]]=self.count
self.count = self.count+1
elif eachline[0] == 'd':
print "Words",words[0]
+ self.devicemodel_dict_beg[words[0]]=self.count
diodebox=QtGui.QGroupBox()
diodegrid=QtGui.QGridLayout()
diodebox.setTitle("Add library for Diode "+words[0]+" : "+words[3])
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
+ try:
+ for child in root:
+ if child.tag[0]==eachline[0] and child.tag[1]==eachline[1]:
+ print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ try:
+ self.entry_var[self.count].setText(child[0].text)
+ except:
+ print "ERROR WHEN SET TEXT"
+ except:
+ pass
diodegrid.addWidget(self.entry_var[self.count],self.row,1)
self.addbtn = QtGui.QPushButton("Add")
self.addbtn.setObjectName("%d" %self.count)
@@ -91,15 +136,27 @@ class DeviceModel(QtGui.QWidget):
#Increment row and widget count
self.row = self.row+1
+ self.devicemodel_dict_end[words[0]]=self.count
self.count = self.count+1
elif eachline[0] == 'j':
print "Words",words[0]
+ self.devicemodel_dict_beg[words[0]]=self.count
jfetbox=QtGui.QGroupBox()
jfetgrid=QtGui.QGridLayout()
jfetbox.setTitle("Add library for JFET "+words[0]+" : "+words[4])
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
+ try:
+ for child in root:
+ if child.tag[0]==eachline[0] and child.tag[1]==eachline[1]:
+ print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ try:
+ self.entry_var[self.count].setText(child[0].text)
+ except:
+ print "ERROR WHEN SET TEXT"
+ except:
+ pass
jfetgrid.addWidget(self.entry_var[self.count],self.row,1)
self.addbtn = QtGui.QPushButton("Add")
self.addbtn.setObjectName("%d" %self.count)
@@ -120,13 +177,17 @@ class DeviceModel(QtGui.QWidget):
#Increment row and widget count
self.row = self.row+1
+ self.devicemodel_dict_end[words[0]]=self.count
self.count = self.count+1
elif eachline[0] == 'm':
+ self.devicemodel_dict_beg[words[0]]=self.count
mosfetbox=QtGui.QGroupBox()
mosfetgrid=QtGui.QGridLayout()
+ i=self.count
+ beg=self.count
mosfetbox.setTitle("Add library for MOSFET "+words[0]+" : "+words[5])
self.entry_var[self.count] =QtGui.QLineEdit()
self.entry_var[self.count].setText("")
@@ -167,12 +228,22 @@ class DeviceModel(QtGui.QWidget):
mosfetgrid.addWidget(self.multifactorLable[self.count],self.row,0)
self.entry_var[self.count] = QtGui.QLineEdit()
self.entry_var[self.count].setText("")
+ end=self.count
self.entry_var[self.count].setMaximumWidth(150)
mosfetgrid.addWidget(self.entry_var[self.count],self.row,1)
self.row = self.row + 1
+ self.devicemodel_dict_end[words[0]]=self.count
self.count = self.count+1
mosfetbox.setLayout(mosfetgrid)
-
+ try:
+ for child in root:
+ if child.tag[0]==eachline[0] and child.tag[1]==eachline[1]:
+ print "DEVICE MODEL MATCHING---",child.tag[0],child.tag[1],eachline[0],eachline[1]
+ while i<=end:
+ self.entry_var[i].setText(child[i-beg].text)
+ i=i+1
+ except:
+ pass
#CSS
mosfetbox.setStyleSheet(" \
QGroupBox { border: 1px solid gray; border-radius: 9px; margin-top: 0.5em; } \
@@ -180,6 +251,7 @@ class DeviceModel(QtGui.QWidget):
")
self.grid.addWidget(mosfetbox)
+
self.show()