diff options
Diffstat (limited to 'OSCAD/modelEditor/modelEditor.py')
-rwxr-xr-x | OSCAD/modelEditor/modelEditor.py | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/OSCAD/modelEditor/modelEditor.py b/OSCAD/modelEditor/modelEditor.py new file mode 100755 index 0000000..ce2d88b --- /dev/null +++ b/OSCAD/modelEditor/modelEditor.py @@ -0,0 +1,166 @@ +#!/usr/bin/python +# modelEditor.py is a python script to display fornt end of the model editor. It developed for OSCAD software. It is written by Yogesh Dilip Save (yogessave@gmail.com) and Shalini Shrivastava. +# Copyright (C) 2012 Yogesh Dilip Save and Shalini Shrivastava, FOSS Project, IIT Bombay. +# This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. +# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +# You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + +from setPath import OSCAD_HOME +from Tkinter import * +import tkMessageBox +import newModel +import openModel +import selectModel +import importModel +import exportModel +import os +import sys + +# Create a new model +def newEditor(e=None): +# Read model information (name and type) + model= newModel.ModelInfo(root) +# Create model file + if model.status: + modelParam = newModel.ModelParam(root,model.modelName,model.modelType) + +# Open an existing model +def openEditor(e=None): + model= openModel.ExistingModelInfo(root) +# Open model file + if model.status: + modelParam = openModel.ExistingModelParam(root,model.modelName) + +# Import an existing model from library +def importEditor(e=None): + model=importModel.ImportModel(root) + temp_model_name=model.modelName + if temp_model_name.startswith('NMOS',0,4): + if os.system("cp "+OSCAD_HOME+"/modelLibrary/"+model.modelName+" mos_n.lib"): + tkMessageBox.showerror("Import Failed","Unable to import model file "+model.modelName) + else: + tkMessageBox.showinfo("Successfully imported","Model file "+model.modelName+" is successfully imported to the project.") + elif temp_model_name.startswith('PMOS',0,4): + if os.system("cp "+OSCAD_HOME+"/modelLibrary/"+model.modelName+" mos_p.lib"): + tkMessageBox.showerror("Import Failed","Unable to import model file "+model.modelName) + else: + tkMessageBox.showinfo("Successfully imported","Model file "+model.modelName+" is successfully imported to the project.") + elif temp_model_name.startswith('D',0,1): + if os.system("cp "+OSCAD_HOME+"/modelLibrary/"+model.modelName+" 1n4007.lib"): + tkMessageBox.showerror("Import Failed","Unable to import model file "+model.modelName) + else: + tkMessageBox.showinfo("Successfully imported","Model file "+model.modelName+" is successfully imported to the project.") + else: + if os.system("cp "+OSCAD_HOME+"/modelLibrary/"+model.modelName+" ."): + tkMessageBox.showerror("Import Failed","Unable to import model file "+model.modelName) + else: + tkMessageBox.showinfo("Successfully imported","Model file "+model.modelName+" is successfully imported to the project.") + + +# Export an existing model to library +def exportEditor(e=None): + model=exportModel.ExportModel(root) + if os.system("cp "+model.modelName+" "+OSCAD_HOME+"/modelLibrary/"): + tkMessageBox.showerror("Export Failed","Unable to export model file "+model.modelName) + else: + tkMessageBox.showinfo("Successfully exported","Model file "+model.modelName+" is successfully exported to the model library") + +# Exit an model editor +def exitEditor(e=None): + if tkMessageBox.askokcancel("QUIT","Do you really wish to quit?"): + root.destroy() + +# Display help content +def helpEditor(e=None): + pass + +# Display help content +def aboutEditor(): + tkMessageBox.showinfo("About Editor","Created by Yogesh Dilip Save and Shalini Shrivastava") + +##Function to open select model from the list to modify it +def openSelectModel(e=None): + filename=sys.argv[1] + #Getting lenght of Model List and clicked result + lenght_modlist,result=callModel(root,filename) + response=result + if result=="OK": + for item in range(lenght_modlist-1): + if response=="OK": + temp_lenght,temp_result=callModel(root,filename) + response=temp_result + else: + break + + else: + pass + +def callModel(root,filename): + model=selectModel.ModelNameList(root, filename) + if model.status: + # Open the circuit file + modelFile=model.modelName+".lib" + # Check model file already exists + if os.path.exists(modelFile): + if tkMessageBox.askokcancel("Model already exists","Do you want to edit?"): + modelParam = openModel.ExistingModelParam(root,model.modelName) + else: + modelParam = newModel.ModelParam(root,model.modelName,model.modelType) + return len(model.modelList),model.click_result + + +root = Tk() +root.title("Ngspice Model Editor") +root.geometry("600x400+300+125") + +# Create and configure a menu +menu = Menu(root) +root.config(menu=menu) + +# Create File menu +filemenu= Menu(menu) +menu.add_cascade(label="File", menu=filemenu) +filemenu.add_command(label="New F2", command=newEditor) +#filemenu.add_command(label="Open F3", command=openEditor) +filemenu.add_command(label="Edit F7",command=openSelectModel) +filemenu.add_separator() +filemenu.add_command(label="Import F4", command=importEditor) +filemenu.add_command(label="Export F5", command=exportEditor) +filemenu.add_separator() +filemenu.add_command(label="Exit F6", command=exitEditor) + +# Create help menu +helpmenu=Menu(menu) +menu.add_cascade(label="Help", menu=helpmenu) +helpmenu.add_command(label="Help F1",command=helpEditor) +helpmenu.add_command(label="About...",command=aboutEditor) + +# Select device from devices in circuit file + +"""model=selectModel.ModelNameList(root, filename) +print "Model",model.modelList + + +if model.status: + # Open the circuit file + modelFile=model.modelName+".lib" + # Check model file already exists + if os.path.exists(modelFile): + if tkMessageBox.askokcancel("Model already exists","Do you want to edit?"): + modelParam = openModel.ExistingModelParam(root,model.modelName) + else: + modelParam = newModel.ModelParam(root,model.modelName,model.modelType) +""" +# Protocol for deletion of main window +root.protocol("WM_DELETE_WINDOW",exitEditor) + +# Create shortcut keys +root.bind("<F2>", newEditor) +#root.bind("<F3>", openEditor) +root.bind("<F4>", importEditor) +root.bind("<F5>", exportEditor) +root.bind("<F6>", exitEditor) +root.bind("<F1>", helpEditor) +root.bind("<F7>", openSelectModel) + +mainloop() |