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.py116
1 files changed, 112 insertions, 4 deletions
diff --git a/src/kicadtoNgspice/Model.py b/src/kicadtoNgspice/Model.py
index 0c821190..5421bc7c 100644
--- a/src/kicadtoNgspice/Model.py
+++ b/src/kicadtoNgspice/Model.py
@@ -1,15 +1,55 @@
-from PyQt5 import QtWidgets
+from PyQt5 import QtWidgets, QtCore, QtGui
+from PyQt5.QtCore import QObject, pyqtSlot
from . import TrackWidget
from xml.etree import ElementTree as ET
import os
-
+import sys
class Model(QtWidgets.QWidget):
"""
- This class creates Model Tab of KicadtoNgspice window.
The widgets are created dynamically in the Model Tab.
"""
+ def addHex(self):
+ """
+ This function is use to keep track of all Device Model widget
+ """
+ #print("Calling Track Device Model Library funtion")
+
+
+ init_path = '../../../'
+ if os.name == 'nt':
+ init_path = ''
+
+ self.hexfile = QtCore.QDir.toNativeSeparators(
+ QtWidgets.QFileDialog.getOpenFileName(
+ self, "Open Hex Directory",
+ init_path + "home", "*.hex"
+ )[0]
+ )
+ self.text = open(self.hexfile).read()
+ chosen_file_path = os.path.abspath(self.hexfile)
+ print(os.path.abspath(self.hexfile))
+
+ def uploadHex(self):
+ """
+ This function is use to keep track of all Device Model widget
+ """
+ #print("Calling Track Device Model Library funtion")
+ path1 = os.path.expanduser('~')
+ path2 = '/ngspice-nghdl/src/xspice/icm/ghdl'
+ init_path = path1 + path2
+ if os.name == 'nt':
+ init_path = ''
+ self.hexloc = QtWidgets.QFileDialog.getExistingDirectory(
+ self, "Open Hex Directory",
+ init_path)
+ print(self.hexloc)
+ self.file = open(self.hexloc+"/hex.txt","w")
+ self.file.write(self.text)
+ self.file.close()
+
def __init__(self, schematicInfo, modelList, clarg1):
QtWidgets.QWidget.__init__(self)
@@ -46,7 +86,8 @@ class Model(QtWidgets.QWidget):
# for storing line edit details position details
self.start = 0
self.end = 0
-
+ self.entry_var = {}
+ self.text = ""
# Creating GUI dynamically for Model tab
self.grid = QtWidgets.QGridLayout()
self.setLayout(self.grid)
@@ -60,6 +101,8 @@ class Model(QtWidgets.QWidget):
modelgrid = QtWidgets.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].items():
@@ -90,6 +133,38 @@ class Model(QtWidgets.QWidget):
temp_tag.append(self.nextcount)
self.nextcount = self.nextcount + 1
self.nextrow = self.nextrow + 1
+ if 'upload_hex_file:1' in tag_dict:
+ self.addbtn = QtWidgets.QPushButton("Add Hex File")
+ self.addbtn.setObjectName("%d" % self.nextcount)
+ self.addbtn.clicked.connect(self.addHex)
+ modelgrid.addWidget(self.addbtn, self.nextrow, 2)
+ 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)
+ self.addbtn = QtWidgets.QPushButton("Upload Hex File")
+ self.addbtn.setObjectName("%d" % self.nextcount)
+ self.addbtn.clicked.connect(self.uploadHex)
+ modelgrid.addWidget(self.addbtn, self.nextrow, 3)
+ 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)
+
tag_dict[key] = temp_tag
else:
@@ -102,6 +177,7 @@ class Model(QtWidgets.QWidget):
self.obj_trac.model_entry_var[self.nextcount],
self.nextrow, 1
)
+
try:
for child in root:
@@ -111,9 +187,42 @@ class Model(QtWidgets.QWidget):
i = i + 1
except BaseException:
pass
+
+
tag_dict[key] = self.nextcount
self.nextcount = self.nextcount + 1
self.nextrow = self.nextrow + 1
+ if 'upload_hex_file:1' in tag_dict:
+ self.addbtn = QtWidgets.QPushButton("Add Hex File")
+ self.addbtn.setObjectName("%d" % self.nextcount)
+ self.addbtn.clicked.connect(self.addHex)
+ modelgrid.addWidget(self.addbtn, self.nextrow, 2)
+ 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)
+ self.addbtn = QtWidgets.QPushButton("Upload Hex File")
+ self.addbtn.setObjectName("%d" % self.nextcount)
+ self.addbtn.clicked.connect(self.uploadHex)
+ modelgrid.addWidget(self.addbtn, self.nextrow, 3)
+ 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)
self.end = self.nextcount - 1
modelbox.setLayout(modelgrid)
@@ -157,7 +266,6 @@ class Model(QtWidgets.QWidget):
for itr in self.obj_trac.modelTrack:
if itr == lst:
check = 1
-
if check == 0:
self.obj_trac.modelTrack.append(lst)