Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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 = []
Exemplo n.º 3
0
    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()