+class SlicePickerWindow(QDialog):
+ def __init__(self, parent=None):
+ super(SlicePickerWindow, self).__init__(parent)
+ self.setWindowTitle("Slice Picker")
+
+ sliceLabel = QLabel("Slices:")
+ self.sliceView = SliceView()
+
+ self.status = QLabel("")
+ self.status.setMaximumWidth(640)
+
+ self.buttonBox = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
+ self.buttonBox.button(QDialogButtonBox.Ok).setDefault(True)
+
+ layout = QVBoxLayout()
+ layout.addWidget(sliceLabel)
+ layout.addWidget(self.sliceView)
+ 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()"))
+
+ self.sliceModel = SliceModel()
+ self.refreshAuthority()
+
+ def accept(self):
+ self.slices = self.sliceModel.getSelectedSlices()
+ QDialog.accept(self)
+
+ def setStatus(self, x):
+ self.status.setText(x)
+
+ def refreshAuthority(self):
+ self.process = SfiProcess(self)
+ self.connect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
+
+ self.process.listRecords(config.getAuthority(), None)
+ self.setStatus("Refreshing slice list. This will take a moment...")
+
+ def getAuthorityRecordFinished(self):
+ self.disconnect(self.process, SIGNAL('finished()'), self.getAuthorityRecordFinished)
+
+ faultString = self.process.getFaultString()
+ if not faultString:
+ self.setStatus("<font color='green'>Slice list refreshed.</font>")
+ self.updateSliceView()
+ else:
+ self.setStatus("<font color='red'>Authority rec refresh error: %s</font>" % (faultString))
+
+ def updateSliceView(self):
+ self.sliceModel.updateModel()
+
+ self.sliceView.setModel(self.sliceModel)
+ self.sliceView.resizeColumnToContents(0)
+