summaryrefslogtreecommitdiff
path: root/OSCAD/forntEnd/my_oscad.py
diff options
context:
space:
mode:
authorJayaram Pai2014-05-19 11:02:57 +0530
committerJayaram Pai2014-05-19 11:02:57 +0530
commit8377256e7d90aa7ba1cb51f6164e99f81e2eb53c (patch)
tree5afcc8e82d7f7d4f6fbff900520bd8f05eb343ca /OSCAD/forntEnd/my_oscad.py
downloadFreeEDA-8377256e7d90aa7ba1cb51f6164e99f81e2eb53c.tar.gz
FreeEDA-8377256e7d90aa7ba1cb51f6164e99f81e2eb53c.tar.bz2
FreeEDA-8377256e7d90aa7ba1cb51f6164e99f81e2eb53c.zip
initial commit
Diffstat (limited to 'OSCAD/forntEnd/my_oscad.py')
-rw-r--r--OSCAD/forntEnd/my_oscad.py301
1 files changed, 301 insertions, 0 deletions
diff --git a/OSCAD/forntEnd/my_oscad.py b/OSCAD/forntEnd/my_oscad.py
new file mode 100644
index 0000000..b83dd41
--- /dev/null
+++ b/OSCAD/forntEnd/my_oscad.py
@@ -0,0 +1,301 @@
+from setPath import OSCAD_HOME
+from Tkinter import *
+import thread
+import ttk
+import template
+import tkMessageBox
+import os.path
+import os
+import toolTip
+import selectOption
+from string import maketrans
+from PIL import Image, ImageTk
+import tkFileDialog
+import os
+import Image
+import ImageTk
+
+def new_Project(e=None):
+ text.insert(END,"Select the directory to save the project\n")
+ directory=tkFileDialog.askdirectory()
+ if directory:
+ try:
+ os.chdir(directory)
+ text.insert(END, "Changing directory to "+directory+"\n\n")
+ text.yview(END)
+ except OSError, msg:
+ tkMessageBox.showerror("Change Directory Failed",msg)
+ else:
+ tkMessageBox.showwarning("Bad input","Directory is not specified, please try again")
+ text.insert(END, "In Main window:\n")
+ text.insert(END, "Please select the proper option from File Menu\n")
+ text.yview(END)
+ text.insert(END, "Please enter a project Name\n")
+ text.yview(END)
+# Read project information (name)
+ project= newProject.ProjectInfo(root,text)
+# Create project files
+ if project.status:
+ projectParam = newProject.ProjectParam(root,text,project.projectName)
+
+# Open an existing model
+def open_Project(e=None):
+# Read project information (name)
+ text.insert(END, "Please enter the project Name\n")
+ text.yview(END)
+ project= openProject.ProjectInfo(root,text)
+# Open model file
+ if project.status:
+ projectParam = newProject.ProjectParam(root,text,project.projectName)
+ text.insert(END, "In Main window:\n")
+ text.insert(END, "Please select the proper option from File Menu\n")
+
+# Change the current directory to new directory
+def changeDirectory(event=None):
+ folderName=tkFileDialog.askdirectory()
+ if folderName:
+ try:
+ os.chdir(folderName)
+ text.insert(END, "Changing directory to "+folderName+"\n\n")
+ text.yview(END)
+ open_Project()
+ except OSError, msg:
+ tkMessageBox.showerror("Change Directory Failed",msg)
+ else:
+ tkMessageBox.showwarning("Bad input","Directory is not specified, please try again")
+ text.insert(END, "In Main window:\n")
+ text.insert(END, "Please select the proper option from File Menu\n")
+ text.yview(END)
+
+def exit_Project(e=None):
+ if tkMessageBox.askokcancel("QUIT","Do you really wish to quit?"):
+ text.insert(END, "Bye Bye......\n")
+ root.destroy()
+
+# Display help content
+def help_Project(e=None):
+ pass
+
+# Display help content
+def about_Project():
+ tkMessageBox.showinfo("About Editor","Created by Yogesh Dilip Save")
+
+def createButtonForCommand(frameName,commandName,imagePath,textlabel):
+ # Open images
+ im = Image.open(imagePath)
+ photo = ImageTk.PhotoImage(im)
+
+ # Create button and set label for tools
+ w = Button(frameName, image=photo, width=20, height=14, command=commandName, default=ACTIVE)
+ w.image=photo
+ w.pack(side=TOP, padx=1, pady=1)
+ toolTip.createToolTip(w,textlabel)
+
+def call_system(command):
+ os.system(command)
+
+def openSchematic(e=None):
+ text.insert(END, " Opening schematic editor .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ #update_idletasks()
+ command="eeschema "+self.projectName+".sch "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openFootprint(e=None):
+ text.insert(END, " Opening footprint editor .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command="cvpcb "+self.projectName+".net "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openLayout(e=None):
+ text.insert(END, " Opening layout editor .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command="pcbnew "+self.projectName+".net "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openNetConverter(e=None):
+ text.insert(END, " Running netlist converter .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command="xterm -e \""+self.OSCAD_HOME+"/kicadtoNgspice/KicadtoNgspice.py "+self.projectName+".cir 1\""
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openAnalysisInserter(e=None):
+ text.insert(END, " Opening analysis inserter .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command=self.OSCAD_HOME+"/analysisInserter/convertgui.py"
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openModelBuilder(e=None):
+ text.insert(END, " Opening model editor .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command=self.OSCAD_HOME+"/modelEditor/modelEditor.py " +self.projectName+".cir "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openSubcircuitBuilder(e=None):
+ text.insert(END, " Opening Sub-circuit editor ................\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command=self.OSCAD_HOME+"/subcktEditor/subcktEditor.py " +self.projectName+".cir "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openNgspice(e=None):
+ text.insert(END, " Running ngspice circuit simulator .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ command="xterm -e \"ngspice "+self.projectName+".cir.out \""
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+def openSMCSim(e=None):
+ text.insert(END, " Running scilab based circuit simulator .........\n")
+ text.yview(END)
+ # Call all pending idle tasks, without processing any other events.
+ update_idletasks()
+ Option=selectOption.SelectOption(self,self.text,"LPCSim")
+ command=self.OSCAD_HOME+"/bin/scilab54 -f " +self.OSCAD_HOME+"/LPCSim/LPCSim/Main.sci -args "+self.projectName+".cir.ckt "
+ try:
+ thread.start_new_thread(self.call_system,(command,))
+ except Exception,err:
+ print err
+ text.insert(END, "Select a tool from tool menu\n")
+ text.yview(END)
+
+
+# Create and configure a graphical window
+root = Tk()
+root.title("OSCAD for Electronics and Electrical Engineers")
+
+# make it cover the entire screen
+w, h = root.winfo_screenwidth(), root.winfo_screenheight()
+root.geometry("%dx%d" % (0.65*w, 0.65*h))
+root.focus_set()
+
+# 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=new_Project)
+filemenu.add_command(label="Open F3", command=changeDirectory)
+filemenu.add_separator()
+filemenu.add_command(label="Exit F4", command=exit_Project)
+
+# Create help menu
+helpmenu=Menu(menu)
+menu.add_cascade(label="Help", menu=helpmenu)
+helpmenu.add_command(label="Help F1",command=help_Project)
+helpmenu.add_command(label="About...",command=about_Project)
+
+# Protocol for deletion of main window
+root.protocol("WM_DELETE_WINDOW",exit_Project)
+
+# Create shortcut keys
+root.bind("<F2>", new_Project)
+root.bind("<F3>", open_Project)
+root.bind("<F4>", exit_Project)
+root.bind("<F1>", help_Project)
+root.bind("<F5>", changeDirectory)
+
+mainWindow = LabelFrame(root, bd=4, relief=SUNKEN,text="Main Window", bg='lightblue')
+mainWindow.pack(side=TOP,fill="both", padx=5, pady=5,expand="Y")
+mainWindow.place(relheight=0.85, relwidth=0.99, rely=0.0)
+
+c = Canvas(mainWindow, bg='white',width=745, height=320)
+c.pack()
+im = Image.open(OSCAD_HOME+"/images/OSCADlogo.jpeg")
+tkim = ImageTk.PhotoImage(im)
+c.create_image(375, 150, image=tkim)
+
+buttonWindow = Frame(root, bd=4, relief=SUNKEN)
+buttonWindow.pack(side=RIGHT,fill="both", padx=2, pady=2,expand="Y")
+buttonWindow.place(relheight=0.6, relwidth=0.06, rely=0.04, relx=0.01)
+
+createButtonForCommand(buttonWindow,openSchematic,OSCAD_HOME+"/images/seLogo.jpg","Schematic Editor")
+createButtonForCommand(buttonWindow,openFootprint,OSCAD_HOME+"/images/feLogo.jpg","Footprint Editor")
+createButtonForCommand(buttonWindow,openLayout,OSCAD_HOME+"/images/leLogo.jpg","Layout Editor")
+createButtonForCommand(buttonWindow,openAnalysisInserter,OSCAD_HOME+"/images/anLogo.jpg","Analysis Insertor")
+createButtonForCommand(buttonWindow,openModelBuilder,OSCAD_HOME+"/images/mbLogo.jpg","Model builder")
+createButtonForCommand(buttonWindow,openSubcircuitBuilder,OSCAD_HOME+"/images/sbLogo.jpg","Subcircuit builder")
+createButtonForCommand(buttonWindow,openNetConverter,OSCAD_HOME+"/images/knLogo.jpg","NetList Converter")
+createButtonForCommand(buttonWindow,openNgspice,OSCAD_HOME+"/images/ngLogo.jpg","Ngspice")
+createButtonForCommand(buttonWindow,openSMCSim,OSCAD_HOME+"/images/slLogo.jpg","SMCSim")
+
+reportWindow = LabelFrame(root, bd=4, relief=SUNKEN,text="Report Window")
+reportWindow.pack(side=BOTTOM,fill="both", padx=5, pady=5,expand="Y")
+reportWindow.place(relheight=0.35, relwidth=0.99, rely=0.65)
+
+text = Text(reportWindow)
+text.insert(INSERT, "Welcome.....\n")
+text.insert(END, "First select project working directory using File Menu\n")
+text.insert(END, "Then select the proper option in File Menu\n")
+text.focus_set()
+text.pack()
+text.place(relheight=0.98, relwidth=0.99, rely=0.02)
+text.config(borderwidth=5)
+
+scrollY = Scrollbar(reportWindow,orient=VERTICAL,command=text.yview)
+scrollY.pack(fill=Y)
+scrollY.place(relheight=0.98,relwidth=0.01, rely=0.02, relx=0.99)
+text.config(yscrollcommand=scrollY.set)
+scrollY.set(0,0.5)
+
+
+def execute(event):
+ print "yogesh"
+
+text.bind("<Return>",execute)
+mainloop()