summaryrefslogtreecommitdiff
path: root/src/subcircuit
diff options
context:
space:
mode:
Diffstat (limited to 'src/subcircuit')
-rw-r--r--src/subcircuit/Subcircuit.py11
-rw-r--r--src/subcircuit/uploadSub.py105
2 files changed, 116 insertions, 0 deletions
diff --git a/src/subcircuit/Subcircuit.py b/src/subcircuit/Subcircuit.py
index d2e7ec5a..8f55ea13 100644
--- a/src/subcircuit/Subcircuit.py
+++ b/src/subcircuit/Subcircuit.py
@@ -4,6 +4,7 @@ from projManagement.Validation import Validation
from subcircuit.newSub import NewSub
from subcircuit.openSub import openSub
from subcircuit.convertSub import convertSub
+from subcircuit.uploadSub import UploadSub
# This class creates Subcircuit GUI.
@@ -41,11 +42,17 @@ class Subcircuit(QtGui.QWidget):
'<b>To convert Subcircuit Kicad Netlist to Ngspice Netlist</b>')
self.convertbtn.setFixedSize(200, 40)
self.convertbtn.clicked.connect(self.convertsch)
+ self.uploadbtn = QtGui.QPushButton('Upload a Subcircuit')
+ self.uploadbtn.setToolTip(
+ '<b>To Upload a subcircuit</b>')
+ self.uploadbtn.setFixedSize(180, 38)
+ self.uploadbtn.clicked.connect(self.uploadSub)
self.hbox = QtGui.QHBoxLayout()
self.hbox.addWidget(self.newbtn)
self.hbox.addWidget(self.editbtn)
self.hbox.addWidget(self.convertbtn)
+ self.hbox.addWidget(self.uploadbtn)
self.hbox.addStretch(1)
self.vbox = QtGui.QVBoxLayout()
@@ -73,3 +80,7 @@ class Subcircuit(QtGui.QWidget):
def convertsch(self):
self.obj_convertsubcircuit = convertSub(self.obj_dockarea)
self.obj_convertsubcircuit.createSub()
+
+ def uploadSub(self):
+ self.obj_uploadsubcircuit = UploadSub()
+ self.obj_uploadsubcircuit.upload()
diff --git a/src/subcircuit/uploadSub.py b/src/subcircuit/uploadSub.py
new file mode 100644
index 00000000..dfabea8d
--- /dev/null
+++ b/src/subcircuit/uploadSub.py
@@ -0,0 +1,105 @@
+from PyQt4 import QtGui
+from configuration.Appconfig import Appconfig
+from projManagement.Validation import Validation
+import os
+import shutil
+
+
+class UploadSub(QtGui.QWidget):
+ """
+ This class contain function for ulaoding subcircuits
+ in Subcircuit library present in src folder.
+ A folder is created in src/SubcircuitLibrary
+ and desired file is moved to that folder.
+ """
+
+ def __init__(self):
+ super(UploadSub, self).__init__()
+ self.obj_validation = Validation()
+ self.obj_appconfig = Appconfig()
+
+ def upload(self):
+ """
+ This method opens a dialogue box when Upload subcircuit button is
+ clicked and after entering folder name, it opens directory system
+ to chose file for folder, it only shows file with extension .sub
+ and with the name of project entered earlier as folder name.
+
+ It then validates file if it is in proper format or not, for it
+ the file is passed to the function **validateSub** and it returns
+ true if file has valid format or else it shows an error message.
+ """
+ text, ok = QtGui.QInputDialog.getText(
+ self, 'Subcircuit Info', 'Enter Subcircuit Name:')
+
+ if ok:
+ projname = (str(text))
+ create_subcircuit = projname
+ subcircuit_path = (os.path.join(os.path.abspath('..'),
+ 'SubcircuitLibrary', create_subcircuit))
+
+ if subcircuit_path == "":
+ reply = "NONE"
+ else:
+ reply = self.obj_validation.validateNewproj(str(
+ subcircuit_path))
+
+ if reply == "VALID":
+ print("Validated: Creating subcircuit directory")
+ os.mkdir(subcircuit_path)
+ editfile = str(
+ QtGui.QFileDialog.getOpenFileName(
+ None, "Upload File", os.path.expanduser("~"),
+ (projname + ".sub")))
+
+ upload = os.path.basename(editfile)
+ print("===================")
+ print("Current path of subcircuit file is " + editfile)
+ print("===================")
+ print("Selected file is " + upload)
+ print("===================")
+ self.valid = self.obj_validation.validateSubcir(str(editfile))
+ print("===================")
+
+ if self.valid is True:
+ print("Right file format!!!")
+ print("===================")
+ subcircuit = (os.path.join(subcircuit_path, upload))
+ print("Final path of file is " + subcircuit)
+ print("===================")
+ print("Copying file from "
+ + editfile
+ + " to "
+ + subcircuit)
+ print("===================")
+ shutil.copy(editfile, subcircuit)
+ else:
+ self.msg = QtGui.QErrorMessage(self)
+ self.msg.showMessage(
+ "Content of file does not meet the required format.\
+ Please make sure file starts with * .subckt \
+ " + upload + "** and ends with **.ends \
+ " + upload + "**")
+ self.msg.setWindowTitle("Error Message")
+ print("Invalid file format")
+ print("===================")
+ print("Removing directory " + subcircuit_path)
+ print("===================")
+ os.rmdir(subcircuit_path)
+
+ elif reply == "CHECKEXIST":
+ print("Project name already exists.")
+ print("==========================")
+ msg = QtGui.QErrorMessage(self)
+ msg.showMessage(
+ "The project already exist. Please select \
+ the different name or delete existing project")
+ msg.setWindowTitle("Error Message")
+
+ elif reply == "CHECKNAME":
+ print("Name can not contain space between them")
+ print("===========================")
+ msg = QtGui.QErrorMessage(self)
+ msg.showMessage(
+ 'The project name should not contain space between them')
+ msg.setWindowTitle("Error Message")