From 8b3735748e2e19ffab1c814d0cea4b34369f621c Mon Sep 17 00:00:00 2001 From: smbaker Date: Tue, 6 Sep 2011 03:31:03 -0700 Subject: [PATCH] create dialog code --- sface/sficreate.py | 100 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 sface/sficreate.py diff --git a/sface/sficreate.py b/sface/sficreate.py new file mode 100644 index 0000000..b4db34a --- /dev/null +++ b/sface/sficreate.py @@ -0,0 +1,100 @@ +import calendar +import datetime +import os +import re +import sys +import time + +from PyQt4.QtCore import * +from PyQt4.QtGui import * +from sface.config import config +from sface.sfiprocess import SfiProcess + +class CreateWindow(QDialog): + def __init__(self, parent=None): + super(CreateWindow, self).__init__(parent) + self.setWindowTitle("Create new Slice") + + self.renewProcess = None + + self.sliceWasCreated = False + + hrnLabel = QLabel("Slice HRN:") + self.hrnEdit = QLineEdit() + urlLabel = QLabel("Project URL:") + self.urlEdit = QLineEdit() + descLabel = QLabel("Description") + self.descEdit = QTextEdit() + + self.status = QLabel("") + + self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) + self.buttonBox.button(QDialogButtonBox.Ok).setDefault(True) + + layout = QVBoxLayout() + layout.addWidget(hrnLabel) + layout.addWidget(self.hrnEdit) + layout.addWidget(urlLabel) + layout.addWidget(self.urlEdit) + layout.addWidget(descLabel) + layout.addWidget(self.descEdit) + layout.addWidget(self.status) + layout.addWidget(self.buttonBox) + self.setLayout(layout) + + self.connect(self.buttonBox, SIGNAL("accepted()"), self, SLOT("accept()")) + self.connect(self.buttonBox, SIGNAL("rejected()"), self, SLOT("reject()")) + + def accept(self): + auth = config.getAuthority() + desc = str(self.descEdit.toPlainText()) + hrn = str(self.hrnEdit.text()) + type = "slice" + url = str(self.urlEdit.text()) + + if not hrn.startswith(auth): + QMessageBox.warning(self, "Invalid HRN", "HRN must be within your current authority (%s)" % auth) + return + + if not (url.startswith("http://") or url.startswith("https://")): + QMessageBox.warning(self, "Invalid URL", "URL must start with http:// or https://") + return + + if not desc: + QMessageBox.warning(self, "Invalid Description", "Description is too short") + return + + self.setStatus("Registering Slice...") + + self.createProcess = SfiProcess(self) + self.connect(self.createProcess, SIGNAL('finished()'), self.createFinished) + + self.buttonBox.setEnabled(False) + + newSliceRecord = os.path.expanduser("~/.sfi/newslice.record") + file(newSliceRecord, "w").write('' % (auth, desc, hrn, type, url)) + self.createProcess.addRecord(newSliceRecord) + + def setStatus(self, x): + self.status.setText(x) + + def createFinished(self): + if self.createProcess.faults==[]: + # need to check for success/failure + self.setStatus("Slice created.") + self.sliceWasCreated = True + self.buttonBox.setEnabled(True) + self.buttonBox.clear() + self.buttonBox.addButton(QDialogButtonBox.Close) + else: + faultString = self.createProcess.faults[0].get("faultString","") + self.setStatus("Slice creation failed: %s" % (faultString)) + self.sliceWasCreated = False + self.buttonBox.setEnabled(True) + + self.disconnect(self.createProcess, SIGNAL('finished()'), self.createFinished) + self.createProcess = None + + def getHrn(self): + return self.hrnEdit.text() + -- 2.43.0