def __init__(self, parent): super(advDialog, self).__init__(parent) self.buttons = [] grid = QtGui.QGridLayout() encyclopedia = parent.classDictionary # Choose grid dimensions to be closest to a square columns = int(round(sqrt(len(parent.ui.advancedNames)))) for k, name in enumerate(sorted(parent.ui.advancedNames)): row = k // columns col = k % columns button = QtGui.QPushButton(name) button.setToolTip(wordwrap(encyclopedia[name].elementDescription, 60)) grid.addWidget(button, row, col) self.buttons.append(button) self.setLayout(grid)
def __init__(self, module, parent = None): rt_qt.QtGui.QWidget.__init__(self) #customize for simulation type self.beamlineType = module.beamlineType self.classDictionary = module.classDictionary self.importer = module.fileImporter self.exporter = module.fileExporter self.defaultBeamline = '' #set layout self.ui = Ui_tree(self, module) #undo/redo self.undoStack = rt_qt.QtGui.QUndoStack() #connections self.ui.workingBeamline.lengthChange.connect(self.callAfterWorkingBeamlineChanges) self.ui.workingBeamline.itemDoubleClicked.connect(self.editElement) self.ui.workingBeamline.itemPressed.connect(self.listClick) self.adv = advDialog(self) for button in self.ui.buttons + self.adv.buttons: button.clicked.connect(self.createNewElement) button.setToolTip(wordwrap(self.classDictionary[button.text()].elementDescription, 60)) if len(self.ui.advancedNames) > 0: self.ui.advanced.clicked.connect(self.adv.show) self.ui.clearBeamlineButton.clicked.connect(self.newBeam) self.ui.saveBeamlineButton.clicked.connect(self.addBeam) self.ui.treeWidget.itemClicked.connect(self.treeClick) self.ui.treeWidget.itemDoubleClicked.connect(self.treeItemDoubleClicked) self.ui.treeWidget.itemEntered.connect(self.elementTreeHovered) self.ui.treeWidget.itemExited.connect(self.elementTreeExit) self.ui.graphicsView.itemDoubleClicked.connect(self.editElement) self.ui.graphicsView.wheelZoom.connect(self.zoomPreview) self.ui.graphicsView.dragDone.connect(self.drawLengthScale) self.ui.graphicsView.horizontalScrollBar().valueChanged.connect(self.drawLengthScale) self.ui.graphicsView.verticalScrollBar().valueChanged.connect(self.drawLengthScale) self.ui.graphicsView.itemDropped.connect(self.droppedOnGraphicsWindow) self.ui.contextMenuClicked.connect(self.createContextMenu) #### Keyboard shortcuts #### # Copy element in tree widget rt_qt.QtGui.QShortcut(rt_qt.QtGui.QKeySequence.Copy, self).activated.connect(lambda : self.copyElement(self.ui.treeWidget.currentItem())) # Zooming the preview window rt_qt.QtGui.QShortcut(rt_qt.QtGui.QKeySequence.ZoomIn, self).activated.connect(lambda : self.zoomPreview(1)) rt_qt.QtGui.QShortcut(rt_qt.QtGui.QKeySequence.ZoomOut, self).activated.connect(lambda : self.zoomPreview(-1)) #text self.addToBeamClickText = self.ui.translateUTF8('Add to current beam line') self.beamlineTreeLabel = self.ui.translateUTF8('Beamlines') self.dragTargetMessage = u'Drag elements here \u2192' self.ui.label.setText(self.dragTargetMessage) self.emptyWorkingBeamlineCheck() #user interaction state if parent == None: self.parent = self self.parent.lastUsedDirectory = os.path.expanduser('~') else: self.parent = parent self.elementDictionary = OrderedDict() self.workingBeamlineName = '' self.preListSave = [] self.preListNameSave = self.workingBeamlineName self.preListLabelSave = self.ui.label.text() self.zoomScale = 1 self.drawPreviewEnabled = True # Graphical length legend for preview self.lengthLegend = []
def __init__(self, oldElement): super(genDialog, self).__init__() #info stash self.info = [] self.more = [] #create buttons moreButton = QtGui.QPushButton('More') moreButton.setCheckable(True) moreButton.setAutoDefault(False) buttonBox = QtGui.QDialogButtonBox() buttonBox.setOrientation(QtCore.Qt.Vertical) buttonBox.setStandardButtons(QtGui.QDialogButtonBox.Cancel|QtGui.QDialogButtonBox.Ok) #create extendable zone extension = QtGui.QWidget() scrollArea = QtGui.QScrollArea() #create layouts flayout = QtGui.QFormLayout() extlayout = QtGui.QFormLayout() # Get name from oldElement self.info.append([QtGui.QLabel('Name'), QtGui.QLineEdit(oldElement.name)]) self.info[0][1].selectAll() self.info[0][1].setToolTip('Identifying name of element.') flayout.addRow(self.info[0][0],self.info[0][1]) # Attempting to create fields try: for i in range(len(oldElement.parameterNames)): try: data = oldElement.data[i] except IndexError: data = '' if i<5: location = self.info row = i+1 layout = flayout else: location = self.more row = i-5 layout = extlayout location.append([QtGui.QLabel(oldElement.parameterNames[i]), QtGui.QLineEdit(data)]) location[row][1].setToolTip(wordwrap(oldElement.parameterDescription[i] + \ (' (unit: ' + oldElement.units[i] + ')' if oldElement.units[i].strip() else ''), 60)) layout.addRow(location[row][0],location[row][1]) except AttributeError: # Beamlines don't have parameterNames attribute, # skip rest of dialog creation pass if len(self.more)==0: moreButton.setEnabled(False) #set extension widget layout extension.setLayout(extlayout) #set widget inside scroll area scrollArea.setWidget(extension) #set main layout mainlayout = QtGui.QGridLayout(self) mainlayout.setSizeConstraint(QtGui.QLayout.SetFixedSize) if not oldElement.isBeamline(): mainlayout.addWidget(QtGui.QLabel('Blank cells will have default values.\n'), 0, 0) mainlayout.addLayout(flayout,1,0) mainlayout.addWidget(buttonBox,1,1) mainlayout.addWidget(moreButton,2,1) mainlayout.addWidget(scrollArea, 2,0) #connections moreButton.toggled.connect(scrollArea.setVisible) buttonBox.accepted.connect(self.accept) buttonBox.rejected.connect(self.reject) self.setWindowTitle(oldElement.__class__.__name__) scrollArea.hide()