示例#1
0
    def initkmirrordata(self):
        # start the kms QThread
        ''' Add back in once KMS is running '''
        # self.kms_updater = KMS_Thread()
        # self.kms_updater.new_kms_data.connect(self.updatekmirrordata)
        # self.kms_updater.start()

        #place holder data
        self.parallacticangle = rm.randint(10, 170)
        self.positionalerror = rm.randint(0, 90)
        self.kmsstatus = 'Normal'

        self.parallacticangletext = QtGui.QLabel('Parallactic Angle: %s' %(self.parallacticangle))
        self.parallacticangletext.setAlignment(QtCore.Qt.AlignCenter)
        self.positionalerrortext = QtGui.QLabel('Positional Error: %s' %(self.positionalerror))
        self.positionalerrortext.setAlignment(QtCore.Qt.AlignCenter)
        self.kmsstatustext = QtGui.QLabel('KMS Status Flag: %s' %(self.kmsstatus))
        self.kmsstatustext.setAlignment(QtCore.Qt.AlignCenter)
        self.kmstitle = QtGui.QLabel('Kmirror System Position and Status')
        self.kmstitle.setAlignment(QtCore.Qt.AlignCenter)

        self.kmsgui = QtGui.QWidget()
        self.kmsFrame = QtGui.QFrame()
        self.kmsFrame.setStyleSheet("background-color: blue;")
        self.kmsFrame.setFrameShape(QtGui.QFrame.StyledPanel)
        self.kmsFrame.setFrameShadow(QtGui.QFrame.Raised)
        self.kmsparams = QtGui.QVBoxLayout()
        self.kmsparams.addWidget(self.kmsFrame)
        self.kmsparams.addWidget(self.kmstitle)
        self.kmsparams.addWidget(self.kmsstatustext)
        self.kmsparams.addWidget(self.parallacticangletext)
        self.kmsparams.addWidget(self.positionalerrortext)
        self.kmsgui.setLayout(self.kmsparams)
        self.grid.addWidget(self.kmsgui, 4, 1, 1, 1)
示例#2
0
    def display_cuwb_networks_widget(self):
        self.cuwb_nets = QtGui.QWidget()
        self.cuwb_nets.setSizePolicy(QtGui.QSizePolicy.Minimum,
                                     QtGui.QSizePolicy.Maximum)
        nets_layout = QtGui.QVBoxLayout()
        self.cuwb_nets.setLayout(nets_layout)
        self.scroll_area.setWidget(self.cuwb_nets)

        if len(self.network_discovery.available_networks) == 0:
            label = QtGui.QLabel("No CUWB networks are available")
            label.setStyleSheet('color: red')
            nets_layout.addWidget(label, QtCore.Qt.AlignCenter)
        else:
            # Restart CDP streams indexes and empty all containers to avoid duplication
            self.stream_idx = 0
            self.cdp_streams = dict()
            self.stream_checkboxes = dict()
            # All available addresses indexed by ListeningAddrInfo  objects.
            # The values are sets of stream_idx. This information is used to
            # auto check/uncheck checkboxes equivalent addresses.
            # It does not include the indexes of streams with interface '0.0.0.0'
            self.available_addresses = dict()
            # It includes the indexes of streams with interface '0.0.0.0'
            self.any_interface_streams = dict()
            for serial, net_info in sorted(
                    self.network_discovery.available_networks.items(),
                    key=lambda item:
                (item[1].instance_name, item[1].hostname, item[1].source_ip)):
                cuwb_net = QtGui.QFrame()
                cuwb_net.setFrameStyle(QtGui.QFrame.StyledPanel
                                       | QtGui.QFrame.Raised)
                cuwb_net.setLineWidth(1)
                net_layout = QtGui.QGridLayout()
                net_layout.setMargin(0)
                cuwb_net.setLayout(net_layout)

                header = QtGui.QWidget()
                header_layout = QtGui.QGridLayout()
                header.setLayout(header_layout)
                label = QtGui.QLabel('Network: <b>{} ({})</b>'.format(
                    net_info.instance_name, serial))
                header_layout.addWidget(label, 0, 0)
                label = QtGui.QLabel('Host: <b>{}</b>'.format(
                    net_info.hostname))
                header_layout.addWidget(label, 0, 1)
                label = QtGui.QLabel('{}'.format(net_info.source_ip))
                header_layout.addWidget(label, 0, 2, QtCore.Qt.AlignRight)
                net_layout.addWidget(header, 0, 0)

                streams = QtGui.QWidget()
                streams_layout = QtGui.QGridLayout()
                streams.setLayout(streams_layout)
                idx = 0
                stream_order = ['external', 'internal', 'config', 'debug']
                for stream_name in stream_order:
                    # Check if we received information about the CDP stream
                    # before trying to display it
                    if stream_name not in net_info.cdp_streams:
                        continue
                    stream = net_info.cdp_streams[stream_name]
                    label = QtGui.QLabel('{}'.format(
                        stream.alias.capitalize()))
                    streams_layout.addWidget(label, idx, 0)
                    label = QtGui.QLabel('{}/{}'.format(
                        stream.interface, stream.netmask))
                    streams_layout.addWidget(label, idx, 1)
                    label = QtGui.QLabel('->')
                    streams_layout.addWidget(label, idx, 2,
                                             QtCore.Qt.AlignCenter)
                    label = QtGui.QLabel('{}:{}'.format(
                        stream.ip, stream.port))
                    streams_layout.addWidget(label, idx, 3)
                    # Add CDP stream checkbox and connect Qt signal to callback function to handle state changes
                    self.stream_checkboxes[self.stream_idx] = QtGui.QCheckBox()
                    self.stream_checkboxes[
                        self.stream_idx].stateChanged.connect(
                            partial(self.stream_click_event, self.stream_idx))
                    streams_layout.addWidget(
                        self.stream_checkboxes[self.stream_idx], idx, 4,
                        QtCore.Qt.AlignRight)

                    if not self.network_discovery.is_interface_available(
                            stream):
                        # Disable checkbox if interface is not on the same subnet
                        self.stream_checkboxes[self.stream_idx].setEnabled(
                            False)
                    else:
                        # Dynamically add attribute to store the equivalent address(es)
                        # using the local interface(s)
                        stream.equivalent_addresses = self.get_equivalent_addresses(
                            stream)

                        if stream.interface != StreamInformation.any_interface:
                            for listen_addr in stream.equivalent_addresses:
                                # Check if there is another CDP stream with the same IP, port and
                                # equivalent local interface and keep track of the indexes of these streams
                                if listen_addr not in self.available_addresses:
                                    self.available_addresses[
                                        listen_addr] = set()
                                self.available_addresses[listen_addr].add(
                                    self.stream_idx)
                                # Check if we are already listening on this address and autocheck the checkbox
                                if listen_addr in self.active_addresses:
                                    self.stream_checkboxes[
                                        self.stream_idx].setChecked(True)
                        else:
                            # Check if there is another CDP stream with the same IP, port and
                            # interface set to '0.0.0.0' and keep track of the indexes of these streams
                            if stream not in self.any_interface_streams:
                                self.any_interface_streams[stream] = set()
                            self.any_interface_streams[stream].add(
                                self.stream_idx)
                            # Check if we are already listening on this address and autocheck the checkbox
                            if stream in self.active_any_interface_streams:
                                self.stream_checkboxes[
                                    self.stream_idx].setChecked(True)

                    # Keep track of all the displayed CDP streams and their indexes
                    self.cdp_streams[self.stream_idx] = stream
                    self.stream_idx += 1
                    idx += 1
                net_layout.addWidget(streams, 1, 0)
                nets_layout.addWidget(cuwb_net)
示例#3
0
    def initUI(self):

        exitAction = QtGui.QAction('Exit', self)
        exitAction.triggered.connect(self.close)
        exitAction.setShortcut('Ctrl+Q')

        closeAction = QtGui.QAction('Quit', self)
        closeAction.triggered.connect(sys.exit)
        closeAction.setShortcut('Ctrl+X')

        openFileAction = QtGui.QAction('Open File', self)
        openFileAction.triggered.connect(self.openfile)

        selectElementAction = QtGui.QAction('Select Element', self)
        selectElementAction.triggered.connect(self.selectElement)

        selectFilesAction = QtGui.QAction('Select Files', self)
        selectFilesAction.triggered.connect(self.selectFilesShow)

        xCorAction = QtGui.QAction("Cross Correlation", self)
        xCorAction.triggered.connect(self.CrossCorrelation_test)

        phaseXCorAction = QtGui.QAction("Phase Correlation", self)
        phaseXCorAction.triggered.connect(self.CrossCorrelation_test)

        runCenterOfMassAction = QtGui.QAction("run center of mass action",
                                              self)
        runCenterOfMassAction.triggered.connect(self.centerOfMassWindow)

        matcherAction = QtGui.QAction("match template", self)
        matcherAction.triggered.connect(self.match_window)

        selectBeamlineAction = QtGui.QAction("select beamline", self)
        selectBeamlineAction.triggered.connect(self.selectBeamline)

        openTiffFolderAction = QtGui.QAction("Open Tiff Folder", self)
        # openTiffFolderAction.triggered.connect(self.openTiffFolder)
        sinogramAction = QtGui.QAction('Sinogram', self)
        # sinogramAction.triggered.connect(self.sinogram)
        saveImageAction = QtGui.QAction('Save Projections', self)
        # saveImageAction.triggered.connect(self.saveImage)
        saveThetaTxtAction = QtGui.QAction("Save Theta Postion as txt", self)
        # saveThetaTxtAction.triggered.connect(self.saveThetaTxt)
        convertAction = QtGui.QAction('Save data in memory', self)
        # convertAction.triggered.connect(self.convert)
        saveSinogramAction = QtGui.QAction('Save Sinogram', self)
        # saveSinogramAction.triggered.connect(self.saveSinogram)
        runReconstructAction = QtGui.QAction("Reconstruction", self)
        # runReconstructAction.triggered.connect(self.runReconstruct)
        selectImageTagAction = QtGui.QAction("Select Image Tag", self)
        # selectImageTagAction.triggered.connect(self.selectImageTag)
        alignFromTextAction = QtGui.QAction("Alignment from Text", self)
        # alignFromTextAction.triggered.connect(self.alignFromText)
        alignFromText2Action = QtGui.QAction("Alignment from Text2", self)
        # alignFromText2Action.triggered.connect(self.alignFromText2)
        saveAlignToTextAction = QtGui.QAction(
            "Save Alignment information to text", self)
        # saveAlignToTextAction.triggered.connect(self.saveAlignToText)
        restoreAction = QtGui.QAction("Restore", self)
        # restoreAction.triggered.connect(self.restore)
        alignCenterOfMassAction = QtGui.QAction(
            "Align by fitting center of mass position into sine curve", self)
        # alignCenterOfMassAction.triggered.connect(self.alignCenterOfMass)
        exportDataAction = QtGui.QAction("export data", self)
        # exportDataAction.triggered.connect(self.export_data)
        runTransRecAction = QtGui.QAction("Transmission Recon", self)
        # runTransRecAction.triggered.connect(self.runTransReconstruct)
        saveHotSpotPosAction = QtGui.QAction("Save Hot Spot Pos", self)
        # saveHotSpotPosAction.triggered.connect(self.saveHotSpotPos)
        alignHotSpotPosAction = QtGui.QAction("Align Hot Spot pos", self)
        # alignHotSpotPosAction.triggered.connect(self.alignHotSpotPos1)
        reorderAction = QtGui.QAction("Reorder", self)
        # reorderAction.triggered.connect(self.reorder_matrix)
        wienerAction = QtGui.QAction("Wiener", self)
        # wienerAction.triggered.connect(self.ipWiener)
        reorderAction = QtGui.QAction("Reorder", self)
        # reorderAction.triggered.connect(self.reorder_matrix)
        externalImageRegAction = QtGui.QAction("External Image Registaration",
                                               self)
        # externalImageRegAction.triggered.connect(self.externalImageReg)

        self.frame = QtGui.QFrame()
        self.vl = QtGui.QVBoxLayout()

        self.tab_widget = QtGui.QTabWidget()
        self.tab_widget.addTab(self.createImageProcessWidget(),
                               unicode("Image Process"))
        self.tab_widget.addTab(self.createSaveHotspotWidget(),
                               unicode("Alignment"))
        self.tab_widget.addTab(self.createSinoWidget(), unicode("Sinogram"))
        self.tab_widget.addTab(self.createReconWidget(),
                               unicode("Reconstruction"))
        self.tab_widget.currentChanged.connect(self.tab1manual)

        self.vl.addWidget(self.tab_widget)
        self.vl.addWidget(self.createMessageWidget())

        self.frame.setLayout(self.vl)
        self.setCentralWidget(self.frame)
        self.tab_widget.setDisabled(False)

        ## Top menu bar [file   Convert Option    Alignment   After saving in memory]
        menubar = self.menuBar()
        self.fileMenu = menubar.addMenu('&File')
        self.fileMenu.addAction(
            selectBeamlineAction)  #to replace readconfiguration Action
        self.fileMenu.addAction(openFileAction)
        self.fileMenu.addAction(openTiffFolderAction)
        self.fileMenu.addAction(exitAction)
        self.fileMenu.addAction(closeAction)

        self.optionMenu = menubar.addMenu('Convert Option')
        self.optionMenu.addAction(selectFilesAction)
        self.optionMenu.addAction(selectImageTagAction)
        self.optionMenu.addAction(selectElementAction)
        self.optionMenu.addAction(convertAction)
        self.optionMenu.setDisabled(False)

        self.alignmentMenu = menubar.addMenu("Alignment")
        self.alignmentMenu.addAction(saveAlignToTextAction)
        self.alignmentMenu.addAction(runCenterOfMassAction)
        self.alignmentMenu.addAction(alignCenterOfMassAction)
        self.alignmentMenu.addAction(xCorAction)
        self.alignmentMenu.addAction(phaseXCorAction)
        self.alignmentMenu.addAction(matcherAction)
        self.alignmentMenu.addAction(alignFromTextAction)
        self.alignmentMenu.addAction(alignFromText2Action)
        self.alignmentMenu.addAction(saveHotSpotPosAction)
        self.alignmentMenu.addAction(alignHotSpotPosAction)
        self.alignmentMenu.addAction(externalImageRegAction)
        self.alignmentMenu.addAction(restoreAction)
        self.alignmentMenu.setDisabled(False)

        self.afterConversionMenu = menubar.addMenu(
            'After saving data in memory')
        self.afterConversionMenu.addAction(saveImageAction)
        self.afterConversionMenu.addAction(saveThetaTxtAction)
        self.afterConversionMenu.addAction(saveSinogramAction)
        self.afterConversionMenu.addAction(reorderAction)
        self.afterConversionMenu.setDisabled(False)

        add = 0
        if platform == "win32":
            add = 50
        self.setGeometry(add, add, 1100 + add, 500 + add)
        self.setWindowTitle('Maps_To_Tomopy')
        self.show()