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