def add_3d_screenshot(self, _plotName, _plotType, _camera, metadata=None): # called from GraphicsFrameWidget if len(self.screenshotDataDict) > self.maxNumberOfScreenshots: print("MAX NUMBER OF SCREENSHOTS HAS BEEN REACHED") scrData = ScreenshotData() scrData.spaceDimension = "3D" scrData.plotData = (_plotName, _plotType) x_size = Configuration.getSetting("Screenshot_X") y_size = Configuration.getSetting("Screenshot_Y") (scrName, scrCoreName) = self.produce_screenshot_name(scrData) okToAddScreenshot = True for name in self.screenshotDataDict: scrDataFromDict = self.screenshotDataDict[name] if scrDataFromDict.screenshotCoreName == scrCoreName and scrDataFromDict.spaceDimension == "3D": if scrDataFromDict.compareCameras(_camera): print("CAMERAS ARE THE SAME") okToAddScreenshot = False break else: print("CAMERAS ARE DIFFERENT") if (not scrName in self.screenshotDataDict) and okToAddScreenshot: scrData.screenshotName = scrName scrData.screenshotCoreName = scrCoreName scrData.screenshotGraphicsWidget = self.screenshotGraphicsWidget scrData.win_width = x_size scrData.win_height = y_size if metadata is not None: scrData.metadata = metadata tvw = self.tabViewWidget() if tvw: tvw.update_active_window_vis_flags(self.screenshotGraphicsWidget) self.store_gui_vis_config(scrData=scrData) scrData.extractCameraInfo(_camera) # on linux there is a problem with X-server/Qt/QVTK implementation and calling resize right after additional QVTK # is created causes segfault so possible "solution" is to do resize right before taking screenshot. # It causes flicker but does not cause segfault # User should NOT close or minimize this "empty" window (on Linux anyway). if sys.platform == 'Linux' or sys.platform == 'linux' or sys.platform == 'linux2': self.screenshotDataDict[scrData.screenshotName] = scrData self.screenshotCounter3D += 1 else: self.screenshotDataDict[scrData.screenshotName] = scrData self.screenshotCounter3D += 1 else: print("Screenshot ", scrCoreName, " with current camera settings already exists. " \ "You need to rotate camera i.e. rotate picture " \ "using mouse to take additional screenshot") # serializing all screenshots self.serialize_screenshot_data()
def add_2d_screenshot(self, _plotName, _plotType, _projection, _projectionPosition, _camera, metadata=None): if len(self.screenshotDataDict) > self.maxNumberOfScreenshots: print("MAX NUMBER OF SCREENSHOTS HAS BEEN REACHED") scrData = ScreenshotData() scrData.spaceDimension = "2D" scrData.plotData = (_plotName, _plotType) x_size = Configuration.getSetting("Screenshot_X") y_size = Configuration.getSetting("Screenshot_Y") scrData.projection = _projection scrData.projectionPosition = int(_projectionPosition) # import pdb; pdb.set_trace() (scrName, scrCoreName) = self.produce_screenshot_name(scrData) print(" add2DScreenshot(): THIS IS NEW SCRSHOT NAME", scrName) # e.g. Cell_Field_CellField_2D_XY_150 if not scrName in self.screenshotDataDict: scrData.screenshotName = scrName scrData.screenshotCoreName = scrCoreName scrData.screenshotGraphicsWidget = self.screenshotGraphicsWidget # = GraphicsFrameWidget (rf. __init__) scrData.win_width = x_size scrData.win_height = y_size if metadata is not None: scrData.metadata = metadata tvw = self.tabViewWidget() if tvw: tvw.update_active_window_vis_flags(self.screenshotGraphicsWidget) self.store_gui_vis_config(scrData=scrData) scrData.extractCameraInfo(_camera) # so "camera" icon (save images) remembers camera view # on linux there is a problem with X-server/Qt/QVTK implementation and calling resize right after additional QVTK # is created causes segfault so possible "solution" is to do resize right before taking screenshot. # It causes flicker but does not cause segfault. # User should NOT close or minimize this "empty" window (on Linux anyway). if sys.platform == 'Linux' or sys.platform == 'linux' or sys.platform == 'linux2': # pass self.screenshotDataDict[scrData.screenshotName] = scrData else: self.screenshotDataDict[scrData.screenshotName] = scrData else: print("Screenshot ", scrName, " already exists") # serializing all screenshots self.serialize_screenshot_data()