예제 #1
0
        def __init__(self, parent=None, name=None, fl=0):
            qt.QWidget.__init__(self, parent, name, fl)

            self.mainLayout = qt.QVBoxLayout(self)

            self.table = qttable.QTable(self)
            self.table.setSelectionMode(qttable.QTable.Multi)
            self.table.setFocusStyle(qttable.QTable.FollowStyle)
            #self.table.setFocusStyle(qttable.QTable.SpreadSheet)
            #self.table.setReadOnly(1)
            self.table.setColumnReadOnly(0, 1)
            self.table.setColumnReadOnly(2, 1)
            self.table.verticalHeader().setResizeEnabled(0, -1)
            self.table.horizontalHeader().setResizeEnabled(0, -1)
            self.cnt = 0
            self.cntlist = []

            # --- selection in case of a single MCA by scan
            self.firstCnt = qttable.QTableSelection()
            self.firstCnt.init(0, 0)
            self.firstCnt.expandTo(0, 0)

            self.mainLayout.addWidget(self.table)

            #do not use double click
            #self.connect(self.table, qt.SIGNAL("doubleClicked(int,int,int,const qt.QPoint&)"), self.__doubleClicked)
            self.connect(self.table,
                         qt.SIGNAL("clicked(int,int,int,const QPoint&)"),
                         self.__Clicked)
            self.connect(self.table, qt.SIGNAL("selectionChanged()"),
                         self.__selectionChanged)
            self.reset()
예제 #2
0
        def __init__(self, parent=None, name=None, fl=0):
            qt.QWidget.__init__(self, parent, name, fl)

            self.mainLayout = qt.QVBoxLayout(self)

            self.table = qttable.QTable(self)
            self.table.setSelectionMode(qttable.QTable.Multi)
            self.table.setFocusStyle(qttable.QTable.FollowStyle)
            self.table.setReadOnly(1)
            self.table.verticalHeader().setResizeEnabled(0, -1)
            self.table.horizontalHeader().setResizeEnabled(0, -1)

            # --- selection in case of a single MCA by scan
            self.firstMca = qttable.QTableSelection()
            self.firstMca.init(0, 0)
            self.firstMca.expandTo(0, 0)

            self.mainLayout.addWidget(self.table)

            #self.connect(self.table, qt.SIGNAL("selectionChanged()"), self.__selectionChanged)
            # XXX: do not work correctly anymore !!! (after qt.Qt upgrade)
            self.connect(self.table,
                         qt.SIGNAL("doubleClicked(int,int,int,const QPoint&)"),
                         self.__doubleClicked)
            self.reset()
예제 #3
0
    def buildInterface(self):
        vlayout = qt.QVBoxLayout(self)

        title = qt.QLabel("<B>Beam Position<B>", self)
        title.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Expanding,
                                           qt.QSizePolicy.Fixed))
        vlayout.addWidget(title)

        self.calibFrame = qt.QFrame(self)
        self.calibFrame.setFrameShape(qt.QFrame.Box)
        self.calibFrame.setFrameShadow(qt.QFrame.Sunken)
        vlayout.addWidget(self.calibFrame)

        vlayout1 = qt.QVBoxLayout(self.calibFrame)
        vlayout1.setMargin(10)

        self.table = qttable.QTable(0, 3, self.calibFrame)
        self.table.setFocusPolicy(qt.QWidget.NoFocus)
        self.table.setSelectionMode(qttable.QTable.NoSelection)
        self.table.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Minimum,
                                                qt.QSizePolicy.Minimum))
        self.table.verticalHeader().hide()
        self.table.setLeftMargin(0)
        self.table.setReadOnly(True)

        header = self.table.horizontalHeader()
        header.setLabel(0, "Zoom")
        header.setLabel(1, "Y Beam (pix.)")
        header.setLabel(2, "Z Beam (pix.)")

        self.table.clearSelection(True)

        vlayout1.addWidget(self.table)

        vlayout1.addSpacing(10)
        f1 = qt.QFrame(self.calibFrame)
        f1.setFrameShape(qt.QFrame.HLine)
        f1.setFrameShadow(qt.QFrame.Sunken)
        vlayout1.addWidget(f1)
        vlayout1.addSpacing(10)

        self.saveButton = qt.QPushButton("Save Current Beam Pos.",
                                         self.calibFrame)
        self.connect(self.saveButton, qt.SIGNAL("clicked()"),
                     self.saveCalibration)
        vlayout1.addWidget(self.saveButton)

        vlayout1.addStretch(1)
예제 #4
0
    def __init__(self, parent):
        QWidget.__init__(self, parent)

        self.lastSpecReady = False

        self.queueList = []
        self.table = qttable.QTable(0, 18, self)
        self.table.setLeftMargin(0)
        # self.table.setColumnMovingEnabled(True)
        # self.table.setRowMovingEnabled(True)
        self.connect(
            self.table,
            SIGNAL("contextMenuRequested ( int, int, const QPoint & )"),
            self.queueContextMenu,
        )

        self.validDict = {}
        self.lastValid = True

        self.buttonsContainer = QHBox(self)
        HorizontalSpacer(self.buttonsContainer)
        self.collectButton = QToolButton(self.buttonsContainer)
        self.collectButton.setUsesTextLabel(True)
        self.collectButton.setTextPosition(QToolButton.BesideIcon)
        self.collectButton.setTextLabel("Collect queue")
        self.collectButton.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        self.collectButton.setEnabled(False)
        QObject.connect(self.collectButton, SIGNAL("clicked()"), self.collectQueue)

        det_mode_list = QStringList()
        DataCollectQueueWidget.PARAMETERS["detector_mode"][3][1] = det_mode_list

        for param_name in DataCollectQueueWidget.PARAMETERS:
            param = DataCollectQueueWidget.PARAMETERS[param_name]
            param_index = param[0]
            param_label = param[1]
            param_readonly = param[2]
            param_type = param[3]
            self.table.horizontalHeader().setLabel(param_index, param_label)
            if param_readonly:
                self.table.setColumnReadOnly(param_index, True)

        self.table.setLeftMargin(4 * self.table.leftMargin())

        QVBoxLayout(self, 1, 2)
        self.layout().addWidget(self.table)
        self.layout().addWidget(self.buttonsContainer)
    def buildInterface(self):
        vlayout = qt.QVBoxLayout(self)

        title = qt.QLabel("<B>Pixel Size Calibration<B>", self)
        title.setSizePolicy(
            qt.QSizePolicy(qt.QSizePolicy.Expanding, qt.QSizePolicy.Fixed))
        vlayout.addWidget(title)

        self.calibFrame = qt.QFrame(self)
        self.calibFrame.setFrameShape(qt.QFrame.Box)
        self.calibFrame.setFrameShadow(qt.QFrame.Sunken)
        vlayout.addWidget(self.calibFrame)

        vlayout1 = qt.QVBoxLayout(self.calibFrame)
        vlayout1.setMargin(10)

        self.table = qttable.QTable(0, 3, self.calibFrame)
        self.table.setFocusPolicy(qt.QWidget.NoFocus)
        self.table.setSelectionMode(qttable.QTable.NoSelection)
        self.table.setSizePolicy(
            qt.QSizePolicy(qt.QSizePolicy.Minimum, qt.QSizePolicy.Minimum))
        self.table.verticalHeader().hide()
        self.table.setLeftMargin(0)
        self.table.setReadOnly(True)

        header = self.table.horizontalHeader()
        header.setLabel(0, "Zoom")
        header.setLabel(1, "Y Size (nm)")
        header.setLabel(2, "Z Size (nm)")

        self.table.clearSelection(True)

        vlayout1.addWidget(self.table)

        vlayout1.addSpacing(10)
        f1 = qt.QFrame(self.calibFrame)
        f1.setFrameShape(qt.QFrame.HLine)
        f1.setFrameShadow(qt.QFrame.Sunken)
        vlayout1.addWidget(f1)
        vlayout1.addSpacing(10)

        self.saveButton = qt.QPushButton("Save Current Calibration",
                                         self.calibFrame)
        self.connect(self.saveButton, qt.SIGNAL("clicked()"),
                     self.saveCalibration)
        vlayout1.addWidget(self.saveButton)

        vlayout1.addSpacing(10)
        f1 = qt.QFrame(self.calibFrame)
        f1.setFrameShape(qt.QFrame.HLine)
        f1.setFrameShadow(qt.QFrame.Sunken)
        vlayout1.addWidget(f1)
        vlayout1.addSpacing(10)

        hlayout1 = qt.QHBoxLayout(vlayout1)
        self.relYLabel = qt.QLabel("Y Move:", self.calibFrame)
        hlayout1.addWidget(self.relYLabel)
        self.relYText = qt.QLineEdit("0.1", self.calibFrame)
        hlayout1.addWidget(self.relYText)

        hlayout2 = qt.QHBoxLayout(vlayout1)
        self.relZLabel = qt.QLabel("Z Move:", self.calibFrame)
        hlayout2.addWidget(self.relZLabel)
        self.relZText = qt.QLineEdit("0.1", self.calibFrame)
        hlayout2.addWidget(self.relZText)

        vlayout1.addSpacing(5)

        self.calibButton = qt.QPushButton("Start New Calibration",
                                          self.calibFrame)
        self.connect(self.calibButton, qt.SIGNAL("clicked()"),
                     self.calibrationAction)
        vlayout1.addWidget(self.calibButton)

        vlayout1.addStretch(1)
예제 #6
0
    def build(self, comments="True", height=3):
        layout = qt.QVBoxLayout(self)
        layout.setMargin(0)
        layout.setSpacing(0)
        self.__comments = comments
        commentsHBox = qt.QWidget(self)
        layout.addWidget(commentsHBox)
        commentsHBoxLayout = qt.QHBoxLayout(commentsHBox)
        commentsHBoxLayout.setMargin(0)
        commentsHBoxLayout.setSpacing(0)

        tableContainer = qt.QWidget(commentsHBox)
        commentsHBoxLayout.addWidget(tableContainer)
        tableContainerLayout = qt.QVBoxLayout(tableContainer)
        tableContainerLayout.setMargin(0)
        tableContainerLayout.setSpacing(0)
        self.__hboxTableContainer = qt.QWidget(tableContainer)
        hbox = self.__hboxTableContainer
        tableContainerLayout.addWidget(hbox)
        hboxLayout = qt.QHBoxLayout(hbox)
        hboxLayout.setMargin(0)
        hboxLayout.setSpacing(0)
        numberLabel = qt.QLabel(hbox)
        hboxLayout.addWidget(numberLabel)
        numberLabel.setText("Number  of  Compounds:")
        if QTVERSION < '4.0.0':
            numberLabel.setAlignment(qt.QLabel.WordBreak
                                     | qt.QLabel.AlignVCenter)
        else:
            numberLabel.setAlignment(qt.Qt.AlignVCenter)
        self.__numberSpin = qt.QSpinBox(hbox)
        hboxLayout.addWidget(self.__numberSpin)
        if QTVERSION < '4.0.0':
            self.__numberSpin.setMinValue(1)
            self.__numberSpin.setMaxValue(100)
        else:
            self.__numberSpin.setMinimum(1)
            self.__numberSpin.setMaximum(100)
        self.__numberSpin.setValue(1)
        if QTVERSION < '4.0.0':
            self.__table = qttable.QTable(tableContainer)
            self.__table.setNumRows(1)
            self.__table.setNumCols(2)
        else:
            self.__table = qt.QTableWidget(tableContainer)
            self.__table.setRowCount(1)
            self.__table.setColumnCount(2)
        tableContainerLayout.addWidget(self.__table)
        self.__table.setMinimumHeight(
            (height) * self.__table.horizontalHeader().sizeHint().height())
        self.__table.setMaximumHeight(
            (height) * self.__table.horizontalHeader().sizeHint().height())
        self.__table.setMinimumWidth(1 * self.__table.sizeHint().width())
        self.__table.setMaximumWidth(1 * self.__table.sizeHint().width())
        #self.__table.setSizePolicy(qt.QSizePolicy(qt.QSizePolicy.Fixed,qt.QSizePolicy.Fixed))
        if QTVERSION < '4.0.0':
            self.__table.setVScrollBarMode(self.__table.AlwaysOn)
            self.__table.horizontalHeader().setClickEnabled(False)
            qt.QHeader.setLabel(self.__table.horizontalHeader(), 0, "Material")
            qt.QHeader.setLabel(self.__table.horizontalHeader(), 1,
                                "Mass Fraction")
            self.__table.verticalHeader().hide()
            self.__table.setLeftMargin(0)
        else:
            labels = ["Material", "Mass Fraction"]
            for i in range(len(labels)):
                item = self.__table.horizontalHeaderItem(i)
                if item is None:
                    item = qt.QTableWidgetItem(labels[i],
                                               qt.QTableWidgetItem.Type)
                self.__table.setHorizontalHeaderItem(i, item)
        if QTVERSION < '4.1.0':
            self.__table.setSelectionMode(qttable.QTable.NoSelection)
        else:
            self.__table.setSelectionMode(qt.QTableWidget.NoSelection)
        if self.__comments:
            vbox = qt.QWidget(commentsHBox)
            commentsHBoxLayout.addWidget(vbox)
            vboxLayout = qt.QVBoxLayout(vbox)

            #default thickness and density
            self.__gridVBox = qt.QWidget(vbox)
            grid = self.__gridVBox
            vboxLayout.addWidget(grid)
            if QTVERSION < '4.0.0':
                gridLayout = qt.QGridLayout(grid, 2, 2, 11, 4)
            else:
                gridLayout = qt.QGridLayout(grid)
                gridLayout.setMargin(11)
                gridLayout.setSpacing(4)

            densityLabel = qt.QLabel(grid)
            gridLayout.addWidget(densityLabel, 0, 0)
            densityLabel.setText("Default Density (g/cm3):")
            if QTVERSION < '4.0.0':
                densityLabel.setAlignment(qt.QLabel.WordBreak
                                          | qt.QLabel.AlignVCenter)
                self.__densityLine = MyQLineEdit(grid)
            else:
                densityLabel.setAlignment(qt.Qt.AlignVCenter)
                self.__densityLine = qt.QLineEdit(grid)
                validator = qt.QDoubleValidator(self.__densityLine)
                self.__densityLine.setValidator(validator)

            self.__densityLine.setReadOnly(False)
            gridLayout.addWidget(self.__densityLine, 0, 1)

            thicknessLabel = qt.QLabel(grid)
            gridLayout.addWidget(thicknessLabel, 1, 0)
            thicknessLabel.setText("Default  Thickness  (cm):")
            if QTVERSION < '4.0.0':
                thicknessLabel.setAlignment(qt.QLabel.WordBreak
                                            | qt.QLabel.AlignVCenter)
                self.__thicknessLine = MyQLineEdit(grid)
            else:
                thicknessLabel.setAlignment(qt.Qt.AlignVCenter)
                self.__thicknessLine = qt.QLineEdit(grid)
                validator = qt.QDoubleValidator(self.__thicknessLine)
                self.__thicknessLine.setValidator(validator)

            gridLayout.addWidget(self.__thicknessLine, 1, 1)
            self.__thicknessLine.setReadOnly(False)
            if QTVERSION < '4.0.0':
                self.connect(self.__densityLine, qt.SIGNAL('returnPressed()'),
                             self.__densitySlot)
                self.connect(self.__thicknessLine,
                             qt.SIGNAL('returnPressed()'),
                             self.__thicknessSlot)
            else:
                self.connect(self.__densityLine,
                             qt.SIGNAL('editingFinished()'),
                             self.__densitySlot)
                self.connect(self.__thicknessLine,
                             qt.SIGNAL('editingFinished()'),
                             self.__thicknessSlot)

            if QTVERSION > '4.0.0':
                self.__transmissionButton = qt.QPushButton(grid)
                self.__transmissionButton.setText('Material Transmission')
                gridLayout.addWidget(self.__transmissionButton, 2, 0)
                self.__massAttButton = qt.QPushButton(grid)
                self.__massAttButton.setText('Mass Att. Coefficients')
                gridLayout.addWidget(self.__massAttButton, 2, 1)
                self.__transmissionButton.setAutoDefault(False)
                self.__massAttButton.setAutoDefault(False)
                self.connect(self.__transmissionButton, qt.SIGNAL('clicked()'),
                             self.__transmissionSlot)
                self.connect(self.__massAttButton, qt.SIGNAL('clicked()'),
                             self.__massAttSlot)
            vboxLayout.addWidget(qt.VerticalSpacer(vbox))

        if self.__comments:
            #comment
            nameHBox = qt.QWidget(self)
            nameHBoxLayout = qt.QHBoxLayout(nameHBox)
            nameLabel = qt.QLabel(nameHBox)
            nameHBoxLayout.addWidget(nameLabel)
            nameLabel.setText("Material Name/Comment:")
            if QTVERSION < '4.0.0':
                nameLabel.setAlignment(qt.QLabel.WordBreak
                                       | qt.QLabel.AlignVCenter)
            else:
                nameLabel.setAlignment(qt.Qt.AlignVCenter)
            nameHBoxLayout.addWidget(qt.HorizontalSpacer(nameHBox))
            if QTVERSION < '4.0.0':
                self.__nameLine = MyQLineEdit(nameHBox)
                self.connect(self.__nameLine, qt.SIGNAL('returnPressed()'),
                             self.__nameLineSlot)
            else:
                self.__nameLine = qt.QLineEdit(nameHBox)
                self.connect(self.__nameLine, qt.SIGNAL('editingFinished()'),
                             self.__nameLineSlot)
            nameHBoxLayout.addWidget(self.__nameLine)
            self.__nameLine.setReadOnly(False)
            longtext = "En un lugar de La Mancha, de cuyo nombre no quiero acordarme ..."
            self.__nameLine.setFixedWidth(
                self.__nameLine.fontMetrics().width(longtext))
            layout.addWidget(nameHBox)

        self.connect(self.__numberSpin, qt.SIGNAL("valueChanged(int)"),
                     self.__numberSpinChanged)
        if QTVERSION < '4.0.0':
            self.connect(self.__table, qt.SIGNAL("valueChanged(int,int)"),
                         self.__tableSlot)
            self.connect(self.__table, qt.SIGNAL("currentChanged(int,int)"),
                         self.__tableSlot2)
        else:
            self.connect(self.__table, qt.SIGNAL("cellChanged(int,int)"),
                         self.__tableSlot)
            self.connect(self.__table, qt.SIGNAL("cellEntered(int,int)"),
                         self.__tableSlot2)
예제 #7
0
def testwidget():
    def change(list):
        logger.info("New selection:", list)

    a = QApplication(sys.argv)
    if QTVERSION > '5.0.0':
        a.lastWindowClosed.connect(a.quit)
    else:
        QObject.connect(a, SIGNAL("lastWindowClosed()"), a, SLOT("quit()"))

    w = QTabWidget()

    if QTVERSION < '4.0.0':
        f = QPeriodicTable(w)
    else:
        f = QPeriodicTable()
    if QTVERSION < '4.0.0':
        o = QWidget(w)
        ol = QVBoxLayout(o)
        #ol.setAutoAdd(1)
        tlabel = QLabel("QPeriodicCombo", o)
        ol.addWidget(tlabel)
        c = QPeriodicCombo(o)
        ol.addWidget(c)

        t = QLabel("QPeriodicList", o)
        ol.addWidget(t)
        l = QPeriodicList(o)
        ol.addWidget(l)
    else:
        o = QWidget()
        ol = QVBoxLayout(o)
        #ol.setAutoAdd(1)
        tlabel = QLabel("QPeriodicCombo", o)
        ol.addWidget(tlabel)
        c = QPeriodicCombo(o)
        ol.addWidget(c)

        t = QLabel("QPeriodicList", o)
        ol.addWidget(t)
        l = QPeriodicList(o)
        ol.addWidget(l)

    if QTVERSION < '4.0.0':
        tab = qttable.QTable(w)
        tab.setNumRows(2)
        tab.setNumCols(1)
        tab.setItem(0, 0, QPeriodicComboTableItem(tab, addnone=0))
        tab.setItem(1, 0, QPeriodicComboTableItem(tab))
    else:
        tab = QTableWidget()
        tab.setRowCount(2)
        tab.setColumnCount(1)
        tab.setCellWidget(0, 0, QPeriodicCombo(tab, detailed=0))
        tab.setCellWidget(1, 0, QPeriodicCombo(tab, detailed=0))

    w.addTab(f, "QPeriodicTable")
    if QTVERSION < '4.0.0':
        w.addTab(o, "QPeriodicList/Combo")
        w.addTab(tab, "QPeriodicComboTableItem")
    else:
        w.addTab(o, "QPeriodicList/Combo")
        w.addTab(tab, "QPeriodicComboTableItem")

    f.setSelection(['H', 'Fe', 'Si'])

    if QTVERSION < '4.0.0':
        QObject.connect(f, PYSIGNAL("elementClicked"), f.elementToggle)
        QObject.connect(l, PYSIGNAL("selectionChanged"), change)
        QObject.connect(c, PYSIGNAL("selectionChanged"), change)
    elif QTVERSION > '5.0.0':
        f.elementClickedSignal.connect(f.elementToggle)
        l.selectionChanged.connect(change)
        c.selectionChanged.connect(change)
    else:
        QObject.connect(f, SIGNAL("elementClicked"), f.elementToggle)
        QObject.connect(l, SIGNAL("selectionChanged"), change)
        QObject.connect(c, SIGNAL("selectionChanged"), change)

    if QTVERSION < '4.0.0':
        a.setMainWidget(w)
    w.show()
    if QTVERSION < '4.0.0':
        a.exec_loop()
    else:
        a.exec_()