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)
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)
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()