def setUp(self): super(TestScatterProfileToolBar, self).setUp() self.plot = PlotWindow() self.manager = manager.ProfileManager(plot=self.plot) self.manager.setItemType(scatter=True) self.manager.setActiveItemTracking(True) self.plot.show() self.qWaitForWindowExposed(self.plot)
def testEditors(self): roiClasses = [ (rois.ProfileImageHorizontalLineROI, editors._DefaultImageProfileRoiEditor), (rois.ProfileImageVerticalLineROI, editors._DefaultImageProfileRoiEditor), (rois.ProfileImageLineROI, editors._DefaultImageProfileRoiEditor), (rois.ProfileImageCrossROI, editors._DefaultImageProfileRoiEditor), (rois.ProfileScatterHorizontalLineROI, editors._DefaultScatterProfileRoiEditor), (rois.ProfileScatterVerticalLineROI, editors._DefaultScatterProfileRoiEditor), (rois.ProfileScatterLineROI, editors._DefaultScatterProfileRoiEditor), (rois.ProfileScatterCrossROI, editors._DefaultScatterProfileRoiEditor), (rois.ProfileScatterHorizontalSliceROI, editors._NoProfileRoiEditor), (rois.ProfileScatterVerticalSliceROI, editors._NoProfileRoiEditor), (rois.ProfileScatterCrossSliceROI, editors._NoProfileRoiEditor), (rois.ProfileImageStackHorizontalLineROI, editors._DefaultImageStackProfileRoiEditor), (rois.ProfileImageStackVerticalLineROI, editors._DefaultImageStackProfileRoiEditor), (rois.ProfileImageStackLineROI, editors._DefaultImageStackProfileRoiEditor), (rois.ProfileImageStackCrossROI, editors._DefaultImageStackProfileRoiEditor), ] with self.defaultPlot() as plot: profileManager = manager.ProfileManager(plot, plot) editorAction = profileManager.createEditorAction(parent=plot) for roiClass, editorClass in roiClasses: with self.subTest(roiClass=roiClass): roi = roiClass() roi._setProfileManager(profileManager) try: # Force widget creation menu = qt.QMenu(plot) menu.addAction(editorAction) widgets = editorAction.createdWidgets() self.assertGreater(len(widgets), 0) editorAction.setProfileRoi(roi) editorWidget = editorAction._getEditor(widgets[0]) self.assertIsInstance(editorWidget, editorClass) self.genericEditorTest(plot, roi, editorWidget) finally: editorAction.setProfileRoi(None) menu.deleteLater() menu = None self.qapp.processEvents()
def genericRoiTest(self, plot, roiClass): profileManager = manager.ProfileManager(plot, plot) profileManager.setItemType(image=True, scatter=True) try: action = profileManager.createProfileAction(roiClass, plot) action.triggered[bool].emit(True) widget = plot.getWidgetHandle() # Do the mouse interaction pos1 = widget.width() * 0.4, widget.height() * 0.4 self.mouseMove(widget, pos=pos1) self.mouseClick(widget, qt.Qt.LeftButton, pos=pos1) if issubclass(roiClass, roi_items.LineROI): pos2 = widget.width() * 0.6, widget.height() * 0.6 self.mouseMove(widget, pos=pos2) self.mouseClick(widget, qt.Qt.LeftButton, pos=pos2) self.waitPendingOperations(profileManager) # Test that something was computed if issubclass(roiClass, rois._ProfileCrossROI): self.assertEqual(profileManager._computedProfiles, 2) elif issubclass(roiClass, roi_items.LineROI): self.assertGreaterEqual(profileManager._computedProfiles, 1) else: self.assertEqual(profileManager._computedProfiles, 1) # Test the created ROIs profileRois = profileManager.getRoiManager().getRois() if issubclass(roiClass, rois._ProfileCrossROI): self.assertEqual(len(profileRois), 3) else: self.assertEqual(len(profileRois), 1) # The first one should be the expected one roi = profileRois[0] # Test that something was displayed if issubclass(roiClass, rois._ProfileCrossROI): profiles = roi._getLines() window = profiles[0].getProfileWindow() self.assertIsNotNone(window) window = profiles[1].getProfileWindow() self.assertIsNotNone(window) else: window = roi.getProfileWindow() self.assertIsNotNone(window) finally: profileManager.clearProfile()