summaryrefslogtreecommitdiff
path: root/src/kicadtoNgspice/Model.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/kicadtoNgspice/Model.py')
-rw-r--r--src/kicadtoNgspice/Model.py140
1 files changed, 140 insertions, 0 deletions
diff --git a/src/kicadtoNgspice/Model.py b/src/kicadtoNgspice/Model.py
new file mode 100644
index 00000000..25a23d8c
--- /dev/null
+++ b/src/kicadtoNgspice/Model.py
@@ -0,0 +1,140 @@
+
+from PyQt4 import QtGui
+
+import TrackWidget
+from xml.etree import ElementTree as ET
+import os
+
+
+class Model(QtGui.QWidget):
+ """
+ This class creates Model Tab of KicadtoNgspice window.
+ The widgets are created dynamically in the Model Tab.
+ """
+
+ def __init__(self,schematicInfo,modelList,clarg1):
+
+ QtGui.QWidget.__init__(self)
+
+ #Processing for getting previous values
+ kicadFile = clarg1
+ (projpath,filename)=os.path.split(kicadFile)
+ project_name=os.path.basename(projpath)
+ 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=="model":
+ root=child
+ except:
+ check=0
+ print "Model Previous Values XML is Empty"
+
+
+
+ #Creating track widget object
+ self.obj_trac = TrackWidget.TrackWidget()
+
+ #for increasing row and counting/tracking line edit widget
+ self.nextrow = 0
+ self.nextcount = 0
+
+ #for storing line edit details position details
+ self.start = 0
+ self.end = 0
+
+ #Creating GUI dynamically for Model tab
+ self.grid = QtGui.QGridLayout()
+ self.setLayout(self.grid)
+
+ for line in modelList:
+ #print "ModelList Item:",line
+ #Adding title label for model
+ #Key: Tag name,Value:Entry widget number
+ tag_dict = {}
+ modelbox=QtGui.QGroupBox()
+ modelgrid=QtGui.QGridLayout()
+ modelbox.setTitle(line[5])
+ self.start=self.nextcount
+ #line[7] is parameter dictionary holding parameter tags.
+ i=0
+ for key,value in line[7].iteritems():
+ #print "Key : ",key
+ #print "Value : ",value
+ #Check if value is iterable
+ if hasattr(value, '__iter__'):
+ #For tag having vector value
+ temp_tag = []
+ for item in value:
+ paramLabel = QtGui.QLabel(item)
+ modelgrid.addWidget(paramLabel,self.nextrow,0)
+ self.obj_trac.model_entry_var[self.nextcount]= QtGui.QLineEdit()
+ modelgrid.addWidget(self.obj_trac.model_entry_var[self.nextcount],self.nextrow,1)
+ try:
+ for child in root:
+ if child.text==line[2] and child.tag==line[3]:
+ self.obj_trac.model_entry_var[self.nextcount].setText(child[i].text)
+ i=i+1
+ except:
+ pass
+ temp_tag.append(self.nextcount)
+ self.nextcount = self.nextcount+1
+ self.nextrow = self.nextrow+1
+ tag_dict[key] = temp_tag
+ else:
+ paramLabel = QtGui.QLabel(value)
+ modelgrid.addWidget(paramLabel,self.nextrow,0)
+ self.obj_trac.model_entry_var[self.nextcount]= QtGui.QLineEdit()
+ modelgrid.addWidget(self.obj_trac.model_entry_var[self.nextcount],self.nextrow,1)
+ try:
+ for child in root:
+ if child.text==line[2] and child.tag==line[3]:
+ self.obj_trac.model_entry_var[self.nextcount].setText(child[i].text)
+ i=i+1
+ except:
+ pass
+ tag_dict[key] = self.nextcount
+ self.nextcount = self.nextcount+1
+ self.nextrow = self.nextrow+1
+ self.end= self.nextcount-1
+ #print "End",self.end
+ modelbox.setLayout(modelgrid)
+
+ #CSS
+ modelbox.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; } \
+ ")
+
+ self.grid.addWidget(modelbox)
+
+ '''
+ Listing all
+ line[0] = index
+ line[1] = compLine
+ line[2] = modelname #Change from compType to modelname
+ line[3] = compName
+ line[4] = comment
+ line[5] = title
+ line[6] = type i.e analog or digital
+ Now adding start,end and tag_dict which will be line[7],line[8] and line[9] respectively
+ '''
+
+ #This keeps the track of Model Tab Widget
+ lst=[line[0],line[1],line[2],line[3],line[4],line[5],line[6],self.start,self.end,tag_dict]
+ check=0
+ for itr in self.obj_trac.modelTrack:
+ if itr==lst:
+ check=1
+
+ if check==0:
+ self.obj_trac.modelTrack.append(lst)
+
+ #print "The tag dictionary : ",tag_dict
+
+
+
+ self.show()
+