From dc69ae08284597de2c6b29ad9dcd1f01bd9fbe11 Mon Sep 17 00:00:00 2001
From: athulappadan
Date: Fri, 26 Jun 2015 10:25:49 +0530
Subject: multiple vhdl files option enabled
---
src/ngspice_ghdl.py | 121 +++++++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 116 insertions(+), 5 deletions(-)
diff --git a/src/ngspice_ghdl.py b/src/ngspice_ghdl.py
index 9f88ce2..8f79f67 100755
--- a/src/ngspice_ghdl.py
+++ b/src/ngspice_ghdl.py
@@ -16,11 +16,13 @@ from ConfigParser import SafeConfigParser
class Mainwindow(QtGui.QWidget):
def __init__(self):
- super(Mainwindow, self).__init__()
+ #super(Mainwindow, self).__init__()
+ QtGui.QMainWindow.__init__(self)
print "Initializing.........."
self.home = os.path.expanduser("~")
self.parser = SafeConfigParser()
self.parser.read(self.home+'/.FreeEDA/config.ini')
+ self.file_list = [] #to keep the supporting files
self.initUI()
def initUI(self):
@@ -30,7 +32,12 @@ class Mainwindow(QtGui.QWidget):
self.exitbtn.clicked.connect(self.closeWindow)
self.browsebtn = QtGui.QPushButton('Browse')
self.browsebtn.clicked.connect(self.browseFile)
+ self.addbtn = QtGui.QPushButton('Add Files')
+ self.addbtn.clicked.connect(self.addFiles)
+ self.removebtn = QtGui.QPushButton('Remove Files')
+ self.removebtn.clicked.connect(self.removeFiles)
self.ledit = QtGui.QLineEdit(self)
+ self.sedit = QtGui.QTextEdit(self)
self.tedit = QtGui.QTextEdit(self)
@@ -40,9 +47,12 @@ class Mainwindow(QtGui.QWidget):
grid.setSpacing(5)
grid.addWidget(self.ledit, 1, 0)
grid.addWidget(self.browsebtn, 1, 1)
- grid.addWidget(self.uploadbtn,2,0)
- grid.addWidget(self.exitbtn,2,1)
- grid.addWidget(self.tedit,3,0)
+ grid.addWidget(self.sedit, 2, 0, 4, 1)
+ grid.addWidget(self.addbtn, 2, 1)
+ grid.addWidget(self.removebtn, 3, 1)
+ grid.addWidget(self.tedit, 6, 0)
+ grid.addWidget(self.uploadbtn, 7, 0)
+ grid.addWidget(self.exitbtn,7, 1)
self.setLayout(grid)
self.setGeometry(300, 300, 600,600)
@@ -63,6 +73,32 @@ class Mainwindow(QtGui.QWidget):
print "Path file :", self.filename
self.ledit.setText(self.filename)
+ def addFiles(self):
+ print "Add Files button clicked"
+ title = self.addbtn.text()
+ for file in QtGui.QFileDialog.getOpenFileNames(self, title):
+ print "Supporting file :", file
+ self.sedit.append(str(file))
+ self.file_list.append(file)
+
+
+ def removeFiles(self):
+ self.fileRemover = FileRemover(self)
+
+
+ #check extensions of all supporting files
+ def checkSupportFiles(self):
+ nonvhdl_count = 0
+ for file in self.file_list:
+ extension = os.path.splitext(str(file))[1]
+ if extension != ".vhdl":
+ nonvhdl_count += 1
+ self.file_list.remove(file)
+
+ if nonvhdl_count > 0:
+ QtGui.QMessageBox.about(self,'Message','''Important Message.
This accepts only .vhdl file ''')
+
+
def createModelDirectory(self):
print "Create Model Directory Called"
self.digital_home=self.parser.get('NGSPICE','DIGITAL_MODEL')
@@ -138,6 +174,9 @@ class Mainwindow(QtGui.QWidget):
shutil.copy(self.home+"/.FreeEDA/ghdlserver/ghdlserver.h",path+"/DUTghdl/")
shutil.copy(self.home+"/.FreeEDA/ghdlserver/Utility_Package.vhdl",path+"/DUTghdl/")
shutil.copy(self.home+"/.FreeEDA/ghdlserver/Vhpi_Package.vhdl",path+"/DUTghdl/")
+
+ for file in self.file_list:
+ shutil.copy(str(file), path+"/DUTghdl/")
os.chdir(path+"/DUTghdl")
subprocess.call("bash "+path+"/DUTghdl/compile.sh", shell=True)
@@ -187,6 +226,7 @@ class Mainwindow(QtGui.QWidget):
print "Parser Content:",self.parser.get('NGSPICE', 'NGSPICE_HOME')
self.cur_dir = os.getcwd()
print "My Current Working Directory",self.cur_dir
+ self.checkSupportFiles()
if self.file_extension == ".vhdl":
self.createModelDirectory()
self.addingModelInModpath()
@@ -196,8 +236,79 @@ class Mainwindow(QtGui.QWidget):
else:
QtGui.QMessageBox.about(self,'Message','''Important Message.
This accepts only .vhdl file ''')
+class FileRemover(QtGui.QWidget):
+
+ def __init__(self, main_obj):
+ super(FileRemover, self).__init__()
+ self.row = 0
+ self.col = 0
+ self.cb_dict = {}
+ self.marked_list = []
+ self.files = main_obj.file_list
+ self.sedit = main_obj.sedit
+
+ print self.files
+
+ self.grid = QtGui.QGridLayout()
+ removebtn = QtGui.QPushButton('Remove', self)
+ removebtn.clicked.connect(self.removeFiles)
+
+ self.grid.addWidget(self.createCheckBox(), 0, 0)
+ self.grid.addWidget(removebtn, 1, 1)
+
+ self.setLayout(self.grid)
+ self.show()
+
+ def createCheckBox(self):
+
+ self.checkbox = QtGui.QGroupBox()
+ self.checkbox.setTitle('Remove Files')
+ self.checkgrid = QtGui.QGridLayout()
+
+ self.checkgroupbtn = QtGui.QButtonGroup()
+
+ for path in self.files:
+
+ print path
+
+ self.cb_dict[path] = QtGui.QCheckBox(path)
+ self.checkgroupbtn.addButton(self.cb_dict[path])
+ self.checkgrid.addWidget(self.cb_dict[path], self.row, self.col)
+ self.row += 1
+
+ self.checkgroupbtn.setExclusive(False)
+ self.checkgroupbtn.buttonClicked.connect(self.mark_file)
+ self.checkbox.setLayout(self.checkgrid)
+
+ return self.checkbox
+
+ def mark_file(self):
+
+ for path in self.cb_dict:
+ if self.cb_dict[path].isChecked():
+ if path not in self.marked_list:
+ self.marked_list.append(path)
+
+ else:
+ if path in self.marked_list:
+ self.marked_list.remove(path)
+
+ def removeFiles(self):
+
+ for path in self.marked_list:
+ print path, "is removed"
+ self.sedit.append(path + " removed")
+ self.files.remove(path)
+
+ self.sedit.clear()
+ for path in self.files:
+ self.sedit.append(path)
+
+ self.marked_list[:] = []
+ self.files[:] = []
+ self.close()
+
-
def main():
app = QtGui.QApplication(sys.argv)
--
cgit
From 1ef752288661105c78fda32f34fdf832d5e15563 Mon Sep 17 00:00:00 2001
From: athulappadan
Date: Mon, 29 Jun 2015 15:45:25 +0530
Subject: bug in remove method fixed
---
src/ngspice_ghdl.py | 46 ++++++++++++++++++++++++++++------------------
1 file changed, 28 insertions(+), 18 deletions(-)
diff --git a/src/ngspice_ghdl.py b/src/ngspice_ghdl.py
index 8f79f67..ce381d4 100755
--- a/src/ngspice_ghdl.py
+++ b/src/ngspice_ghdl.py
@@ -72,18 +72,24 @@ class Mainwindow(QtGui.QWidget):
self.filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
print "Path file :", self.filename
self.ledit.setText(self.filename)
+ self.file_list[:] = []
+ self.sedit.clear()
def addFiles(self):
print "Add Files button clicked"
title = self.addbtn.text()
for file in QtGui.QFileDialog.getOpenFileNames(self, title):
- print "Supporting file :", file
- self.sedit.append(str(file))
- self.file_list.append(file)
+ print "Supporting file :", file
+ self.sedit.append(str(file))
+ self.file_list.append(file)
def removeFiles(self):
+ if len(self.file_list) > 0:
self.fileRemover = FileRemover(self)
+ else:
+ QtGui.QMessageBox.about(self, 'Message', '''Error
Select supporting files''')
+
#check extensions of all supporting files
@@ -221,20 +227,25 @@ class Mainwindow(QtGui.QWidget):
def uploadModle(self):
print "Upload button clicked"
- self.file_extension = os.path.splitext(str(self.filename))[1]
- print "File extension",self.file_extension
- print "Parser Content:",self.parser.get('NGSPICE', 'NGSPICE_HOME')
- self.cur_dir = os.getcwd()
- print "My Current Working Directory",self.cur_dir
- self.checkSupportFiles()
- if self.file_extension == ".vhdl":
- self.createModelDirectory()
- self.addingModelInModpath()
- self.createModelFiles()
- self.runMake()
- self.runMakeInstall()
- else:
- QtGui.QMessageBox.about(self,'Message','''Important Message.
This accepts only .vhdl file ''')
+ #self.file_list[:] = []
+ try:
+ self.file_extension = os.path.splitext(str(self.filename))[1]
+ print "File extension",self.file_extension
+ print "Parser Content:",self.parser.get('NGSPICE', 'NGSPICE_HOME')
+ self.cur_dir = os.getcwd()
+ print "My Current Working Directory",self.cur_dir
+ self.checkSupportFiles()
+ if self.file_extension == ".vhdl":
+ self.createModelDirectory()
+ self.addingModelInModpath()
+ self.createModelFiles()
+ self.runMake()
+ self.runMakeInstall()
+ else:
+ QtGui.QMessageBox.about(self,'Message','''Important Message.
This accepts only .vhdl file ''')
+
+ except:
+ QtGui.QMessageBox.about(self,'Message','''Error.
Select a .vhdl file''')
class FileRemover(QtGui.QWidget):
@@ -305,7 +316,6 @@ class FileRemover(QtGui.QWidget):
self.sedit.append(path)
self.marked_list[:] = []
- self.files[:] = []
self.close()
--
cgit
From 31834c1879c87d40a92e9023586e6a6b9a699bf6 Mon Sep 17 00:00:00 2001
From: fahim
Date: Tue, 30 Jun 2015 15:47:51 +0530
Subject: Subject: Changes to embed xterm terminal inside widget
Description: Changes to embed xterm terminal inside widget
---
src/ngspice_ghdl.py | 71 +++++++++++++++++++++++++++++++++--------------------
1 file changed, 45 insertions(+), 26 deletions(-)
diff --git a/src/ngspice_ghdl.py b/src/ngspice_ghdl.py
index ce381d4..6791cc1 100755
--- a/src/ngspice_ghdl.py
+++ b/src/ngspice_ghdl.py
@@ -19,6 +19,12 @@ class Mainwindow(QtGui.QWidget):
#super(Mainwindow, self).__init__()
QtGui.QMainWindow.__init__(self)
print "Initializing.........."
+ cwd = os.getcwd()
+ path, file = os.path.split(cwd)
+ print "cwd n path------ >", cwd, path
+ licensefile = os.path.join(path, "LICENSE")
+ fileopen = open(licensefile, 'r')
+ print fileopen.read()
self.home = os.path.expanduser("~")
self.parser = SafeConfigParser()
self.parser.read(self.home+'/.FreeEDA/config.ini')
@@ -38,9 +44,10 @@ class Mainwindow(QtGui.QWidget):
self.removebtn.clicked.connect(self.removeFiles)
self.ledit = QtGui.QLineEdit(self)
self.sedit = QtGui.QTextEdit(self)
- self.tedit = QtGui.QTextEdit(self)
-
-
+ self.process = QtCore.QProcess(self)
+ self.terminal = QtGui.QWidget(self)
+
+ self.process.start('xterm',['-into', str(self.terminal.winId())])
#Creating gridlayout
grid = QtGui.QGridLayout()
@@ -50,20 +57,23 @@ class Mainwindow(QtGui.QWidget):
grid.addWidget(self.sedit, 2, 0, 4, 1)
grid.addWidget(self.addbtn, 2, 1)
grid.addWidget(self.removebtn, 3, 1)
- grid.addWidget(self.tedit, 6, 0)
- grid.addWidget(self.uploadbtn, 7, 0)
- grid.addWidget(self.exitbtn,7, 1)
+ grid.addWidget(self.terminal, 6, 0,10,1)
+ grid.addWidget(self.uploadbtn, 17, 0)
+ grid.addWidget(self.exitbtn,17, 1)
self.setLayout(grid)
self.setGeometry(300, 300, 600,600)
self.setWindowTitle("Ngspice Digital Model Creator")
#self.setWindowIcon(QtGui.QIcon('logo.png'))
- self.tedit.setReadOnly(True)
self.show()
def closeWindow(self):
+ try:
+ self.process.kill()
+ except:
+ pass
print "Close button clicked"
quit()
@@ -72,24 +82,18 @@ class Mainwindow(QtGui.QWidget):
self.filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', '.')
print "Path file :", self.filename
self.ledit.setText(self.filename)
- self.file_list[:] = []
- self.sedit.clear()
def addFiles(self):
print "Add Files button clicked"
title = self.addbtn.text()
for file in QtGui.QFileDialog.getOpenFileNames(self, title):
- print "Supporting file :", file
- self.sedit.append(str(file))
- self.file_list.append(file)
+ print "Supporting file :", file
+ self.sedit.append(str(file))
+ self.file_list.append(file)
def removeFiles(self):
- if len(self.file_list) > 0:
self.fileRemover = FileRemover(self)
- else:
- QtGui.QMessageBox.about(self, 'Message', '''Error
Select supporting files''')
-
#check extensions of all supporting files
@@ -161,7 +165,7 @@ class Mainwindow(QtGui.QWidget):
print "Current Working directory changed to ",self.cur_dir
cmd = "python ~/.FreeEDA/model_generation.py "+str(self.ledit.text())
stdouterr = os.popen4(cmd)[1].read()
- self.tedit.append(stdouterr)
+ print stdouterr
#Moving file to model directory
path=self.digital_home+"/"+self.modelname
shutil.move("cfunc.mod",path)
@@ -204,9 +208,15 @@ class Mainwindow(QtGui.QWidget):
self.release_home=self.parser.get('NGSPICE','RELEASE')
os.chdir(self.release_home)
try:
- cmd = "make"
- self.tedit.append("Running Make")
- subprocess.call(cmd,shell=True)
+ cmd = " make"
+ print "Running Make"
+ path = os.getcwd()
+ #subprocess.call(cmd,shell=True)
+ command = "cd "+path +";"+cmd +";"+"make install"
+ self.args = ['-into', str(self.terminal.winId()),'-hold','+s','-e', command]
+ self.process.start('xterm', self.args)
+ print "pid ------ >",self.process.pid()
+
#stdouterr = os.popen4(cmd)[1].read()
#self.tedit.append(stdouterr)
except:
@@ -216,9 +226,15 @@ class Mainwindow(QtGui.QWidget):
def runMakeInstall(self):
print "run Make Install Called"
try:
- cmd = "make install"
- self.tedit.append("Running Make Install")
- subprocess.call(cmd,shell=True)
+ cmd = " make install"
+ print "Running Make Install"
+ path = os.getcwd()
+ print "cwd------------>", path
+ #subprocess.call(cmd,shell=True)
+ command = "cd "+path+ ";"+cmd
+ self.args = ['-into', str(self.terminal.winId()),'-hold','-e', command]
+ #self.process.start('xterm', self.args)
+ #self.process.waitForFinished(-1)
#stdouterr = os.popen4(cmd)[1].read()
#self.tedit.append(stdouterr)
except:
@@ -227,7 +243,10 @@ class Mainwindow(QtGui.QWidget):
def uploadModle(self):
print "Upload button clicked"
- #self.file_list[:] = []
+ try:
+ self.process.kill()
+ except:
+ pass
try:
self.file_extension = os.path.splitext(str(self.filename))[1]
print "File extension",self.file_extension
@@ -243,9 +262,8 @@ class Mainwindow(QtGui.QWidget):
self.runMakeInstall()
else:
QtGui.QMessageBox.about(self,'Message','''Important Message.
This accepts only .vhdl file ''')
-
except:
- QtGui.QMessageBox.about(self,'Message','''Error.
Select a .vhdl file''')
+ QtGui.QMessageBox.about(self, 'Message','''Error
select a .vhdl file ''')
class FileRemover(QtGui.QWidget):
@@ -316,6 +334,7 @@ class FileRemover(QtGui.QWidget):
self.sedit.append(path)
self.marked_list[:] = []
+ self.files[:] = []
self.close()
--
cgit