summaryrefslogtreecommitdiff
path: root/src/projManagement/Kicad.py
blob: cbee89e9be60925c35c780488d2e4bee414aa7ed (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
#===============================================================================
#
#          FILE: openKicad.py
# 
#         USAGE: --- 
# 
#   DESCRIPTION: It call kicad schematic
# 
#       OPTIONS: ---
#  REQUIREMENTS: ---
#          BUGS: ---
#         NOTES: ---
#        AUTHOR: Fahim Khan, fahim.elex@gmail.com
#  ORGANIZATION: eSim team at FOSSEE, IIT Bombay.
#       CREATED: Tuesday 17 Feb 2015 
#      REVISION:  ---
#===============================================================================

import os
import Validation
from configuration.Appconfig import Appconfig
import Worker
from PyQt4 import QtGui

class Kicad:
    """
    Class Kicad open Schematic,PCB and Layout
    """
    def __init__(self):
        self.obj_validation = Validation.Validation()
        self.obj_appconfig = Appconfig()
        
    
    def openSchematic(self):
        print "Kicad Schematic is called"
        self.projDir = self.obj_appconfig.current_project["ProjectName"]       
        #Validating if current project is available or not
        
        if self.obj_validation.validateKicad(self.projDir):
            print "calling Kicad schematic ",self.projDir
            self.projName = os.path.basename(self.projDir)
            self.project = os.path.join(self.projDir,self.projName)
            
            #Creating a command to run
            self.cmd = "eeschema "+self.project+".sch "
            self.obj_workThread = Worker.WorkerThread(self.cmd)
            self.obj_workThread.start()
            
        else:
            self.msg = QtGui.QErrorMessage(None)
            self.msg.showMessage('Please select the project first. You can either create new project or open existing project')
            self.msg.setWindowTitle("Error Message")
        
        
        
    def openFootprint(self):
        print "Kicad Foot print Editor called"
        self.projDir = self.obj_appconfig.current_project["ProjectName"]       
        #Validating if current project is available or not
        
        if self.obj_validation.validateKicad(self.projDir):
            print "calling Kicad FootPrint Editor ",self.projDir
            self.projName = os.path.basename(self.projDir)
            self.project = os.path.join(self.projDir,self.projName)
            
            #Creating a command to run
            self.cmd = "cvpcb "+self.project+".net "
            self.obj_workThread = Worker.WorkerThread(self.cmd)
            self.obj_workThread.start()
            
        else:
            self.msg = QtGui.QErrorMessage(None)
            self.msg.showMessage('Please select the project first. You can either create new project or open existing project')
            self.msg.setWindowTitle("Error Message")
        
    def openLayout(self):
        print "Kicad Layout is called"
        self.projDir = self.obj_appconfig.current_project["ProjectName"]       
        #Validating if current project is available or not
        if self.obj_validation.validateKicad(self.projDir):
            print "calling Kicad schematic ",self.projDir
            self.projName = os.path.basename(self.projDir)
            self.project = os.path.join(self.projDir,self.projName)
            
            #Creating a command to run
            self.cmd = "pcbnew "+self.project+".net "
            self.obj_workThread = Worker.WorkerThread(self.cmd)
            self.obj_workThread.start()
            
        else:
            self.msg = QtGui.QErrorMessage(None)
            self.msg.showMessage('Please select the project first. You can either create new project or open existing project')
            self.msg.setWindowTitle("Error Message")     
            
    def openKicadToNgspice(self):
        print "Open Kicad to Ngspice Conversion"
        self.projDir = self.obj_appconfig.current_project["ProjectName"]
        #Validating if current project is available or not
        if self.obj_validation.validateKicad(self.projDir):
            print "Project is present"
            #Cheking if project has .cir file or not
            if self.obj_validation.validateCir(self.projDir):
                print "CIR file present"
                self.projName = os.path.basename(self.projDir)
                self.project = os.path.join(self.projDir,self.projName)
                            
                #Creating a command to run
                #self.cmd = "python  /home/fahim/Workspace/eSim/src/kicadtoNgspice/KicadtoNgspice.py "+self.project+".cir "
                self.cmd = "python  ../kicadtoNgspice/KicadtoNgspice.py "+self.project+".cir "
                self.obj_workThread = Worker.WorkerThread(self.cmd)
                self.obj_workThread.start()
                
            else:
                self.msg = QtGui.QErrorMessage(None)
                self.msg.showMessage('Your project do not contain any Kicad netlist file for conversion')
                self.msg.setWindowTitle("Error Message")  
           
        else:
            self.msg = QtGui.QErrorMessage(None)
            self.msg.showMessage('Please select the project first. You can either create new project or open existing project')
            self.msg.setWindowTitle("Error Message")