diff options
author | athulappadan | 2016-05-25 14:17:33 +0530 |
---|---|---|
committer | athulappadan | 2016-05-25 14:17:33 +0530 |
commit | bb8a6a6974d2f425d51df1a3042706011ff351ad (patch) | |
tree | 7663ebfb421c40072f24e519e0eee181a08e8487 /src/ngspicetoModelica | |
parent | 916c3c35b41e297e600903d54ecf1c802ac0b390 (diff) | |
download | eSim-bb8a6a6974d2f425d51df1a3042706011ff351ad.tar.gz eSim-bb8a6a6974d2f425d51df1a3042706011ff351ad.tar.bz2 eSim-bb8a6a6974d2f425d51df1a3042706011ff351ad.zip |
DockWidget added in UI for ngspice to modelica conversion
Diffstat (limited to 'src/ngspicetoModelica')
-rw-r--r-- | src/ngspicetoModelica/ModelicaUI.py | 86 | ||||
-rw-r--r-- | src/ngspicetoModelica/NgspicetoModelica.py | 14 | ||||
-rw-r--r-- | src/ngspicetoModelica/__init__.py | 0 |
3 files changed, 96 insertions, 4 deletions
diff --git a/src/ngspicetoModelica/ModelicaUI.py b/src/ngspicetoModelica/ModelicaUI.py new file mode 100644 index 00000000..e443810d --- /dev/null +++ b/src/ngspicetoModelica/ModelicaUI.py @@ -0,0 +1,86 @@ +import os +import sys +from PyQt4 import QtGui, QtCore +from configuration.Appconfig import Appconfig +from projManagement import Worker +from projManagement.Validation import Validation + +BROWSE_LOCATION = '/home' + +class OpenModelicaEditor(QtGui.QWidget): + + def __init__(self, dir=None): + QtGui.QWidget.__init__(self) + self.obj_validation = Validation() + self.obj_appconfig = Appconfig() + self.projDir = dir + self.projName = os.path.basename(self.projDir) + self.ngspiceNetlist = os.path.join(self.projDir,self.projName+".cir.out") + self.modelicaNetlist = os.path.join(self.projDir,self.projName+".mo") + self.map_json = Appconfig.modelica_map_json + + self.grid = QtGui.QGridLayout() + self.FileEdit = QtGui.QLineEdit() + self.FileEdit.setText(self.ngspiceNetlist) + self.grid.addWidget(self.FileEdit, 0, 0) + + self.browsebtn = QtGui.QPushButton("Browse") + self.browsebtn.clicked.connect(self.browseFile) + self.grid.addWidget(self.browsebtn, 0, 1) + + self.convertbtn = QtGui.QPushButton("Convert") + self.convertbtn.clicked.connect(self.callConverter) + self.grid.addWidget(self.convertbtn, 2, 1) + + self.loadOMbtn = QtGui.QPushButton("Load OMEdit") + self.loadOMbtn.clicked.connect(self.callOMEdit) + self.grid.addWidget(self.loadOMbtn, 3, 1) + + #self.setGeometry(300, 300, 350, 300) + self.setLayout(self.grid) + self.show() + + def browseFile(self): + + self.ngspiceNetlist = QtGui.QFileDialog.getOpenFileName(self, 'Open Ngspice file', BROWSE_LOCATION) + self.FileEdit.setText(self.ngspiceNetlist) + + def callConverter(self): + + try: + self.cmd1 = "python ../ngspicetoModelica/NgspicetoModelica.py " + self.ngspiceNetlist + ' ' + self.map_json + self.obj_workThread1 = Worker.WorkerThread(self.cmd1) + self.obj_workThread1.start() + self.msg = QtGui.QMessageBox() + self.msg.setText("Ngspice netlist successfully converted to OpenModelica netlist") + self.obj_appconfig.print_info("Ngspice netlist successfully converted to OpenModelica netlist") + if self.obj_workThread1.finished: + self.msg.exec_() + + except Exception as e: + self.msg = QtGui.QErrorMessage() + self.msg.showMessage('Unable to convert NgSpice netlist to Modelica netlist. Check the netlist :'+str(e)) + self.msg.setWindowTitle("Ngspice to Modelica conversion error") + + + def callOMEdit(self): + + if self.obj_validation.validateTool("OMEdit"): + self.cmd2 = "OMEdit " + self.modelicaNetlist + self.obj_workThread2 = Worker.WorkerThread(self.cmd2) + self.obj_workThread2.start() + print "OMEdit called" + self.obj_appconfig.print_info("OMEdit called") + + else: + self.msg = QtGui.QMessageBox() + self.msgContent = "There was an error while opening OMEdit.<br/>\ + Please make sure OpenModelica is installed in your system. <br/>\ + To install it on Linux : Go to <a href=https://www.openmodelica.org/download/download-linux>OpenModelica Linux</a> and install nigthly build release.<br/>\ + To install it on Windows : Go to <a href=https://www.openmodelica.org/download/download-windows>OpenModelica Windows</a> and install latest version.<br/>" + self.msg.setTextFormat(QtCore.Qt.RichText) + self.msg.setText(self.msgContent) + self.msg.setWindowTitle("Missing OpenModelica") + self.obj_appconfig.print_info(self.msgContent) + self.msg.exec_() + diff --git a/src/ngspicetoModelica/NgspicetoModelica.py b/src/ngspicetoModelica/NgspicetoModelica.py index e9855e03..7b7e4527 100644 --- a/src/ngspicetoModelica/NgspicetoModelica.py +++ b/src/ngspicetoModelica/NgspicetoModelica.py @@ -7,9 +7,9 @@ from string import maketrans class NgMoConverter: - def __init__(self): + def __init__(self, map_json): #Loading JSON file which hold the mapping information between ngspice and Modelica. - with open('Mapping.json') as mappingFile: + with open(map_json) as mappingFile: self.mappingData = json.load(mappingFile) self.ifMOS = False @@ -987,8 +987,9 @@ def main(args): """ It is main function of module Ngspice to Modelica converter """ - if len(sys.argv) == 2: + if len(sys.argv) == 3: filename = sys.argv[1] + map_json = sys.argv[2] else: print "USAGE:" print "python NgspicetoModelica.py <filename>" @@ -996,8 +997,11 @@ def main(args): dir_name = os.path.dirname(os.path.realpath(filename)) file_basename = os.path.basename(filename) + + cwd = os.getcwd() + os.chdir(dir_name) - obj_NgMoConverter = NgMoConverter() + obj_NgMoConverter = NgMoConverter(map_json) #Getting all the require information lines = obj_NgMoConverter.readNetlist(filename) @@ -1110,6 +1114,8 @@ def main(args): out.close() + + os.chdir(cwd) # Call main function diff --git a/src/ngspicetoModelica/__init__.py b/src/ngspicetoModelica/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/src/ngspicetoModelica/__init__.py |