def compute_current_screenshot_data(self):
        """
        Computes/populates Screenshot Description data based ont he current GUI configuration
        for the current window

        :return: {screenshotData}
        """

        scr_data = ScreenshotData()
        self.store_gui_vis_config(scr_data=scr_data)

        projection_name = str(self.proj_combo_box.currentText())
        projection_position = int(self.proj_spin_box.value())

        field_name, field_type = self.get_current_field_name_and_type()
        scr_data.plotData = (field_name, field_type)

        metadata = self.get_metadata(field_name=scr_data.plotData[0], field_type=scr_data.plotData[1])

        if projection_name == '3D':
            scr_data.spaceDimension = '3D'
        else:
            scr_data.spaceDimension = '2D'
            scr_data.projection = projection_name
            scr_data.projectionPosition = projection_position

        scr_data.metadata = metadata

        return scr_data
示例#2
0
    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()
示例#3
0
    def read_screenshot_description_file_json_379(self, scr_data_container):
        """
        parses screenshot description JSON file and stores instances ScreenshotData in appropriate
        container
        :param scr_data_container: {dict} ScreenShotData json dict
        :return: None
        """
        for scr_name, scr_data_elem in list(scr_data_container.items()):
            scr_data = ScreenshotData()
            scr_data.screenshotName = scr_name

            scr_data.plotData = tuple([
                str(x) for x in (scr_data_elem['Plot']['PlotName'],
                                 scr_data_elem['Plot']['PlotType'])
            ])
            scr_data.spaceDimension = str(scr_data_elem['Dimension'])
            try:
                scr_data.projection = str(
                    scr_data_elem['Projection']['ProjectionPlane'])
                scr_data.projectionPosition = scr_data_elem['Projection'][
                    'ProjectionPosition']
            except KeyError:
                pass
            scr_data.win_width = scr_data_elem['Size']['Width']
            scr_data.win_height = scr_data_elem['Size']['Height']

            scr_data.cell_borders_on = scr_data_elem['CellBorders']
            scr_data.cells_on = scr_data_elem['Cells']
            scr_data.cluster_borders_on = scr_data_elem['ClusterBorders']
            scr_data.cell_glyphs_on = scr_data_elem['CellGlyphs']
            scr_data.fpp_links_on = scr_data_elem['FPPLinks']
            scr_data.bounding_box_on = scr_data_elem['BoundingBox']
            scr_data.lattice_axes_on = scr_data_elem['LatticeAxes']
            scr_data.lattice_axes_labels_on = scr_data_elem[
                'LatticeAxesLabels']
            scr_data.invisible_types = scr_data_elem['TypesInvisible']

            cam_settings = []

            clipping_range_element = scr_data_elem['CameraClippingRange']
            cam_settings.append(float(clipping_range_element['Min']))
            cam_settings.append(float(clipping_range_element['Max']))

            focal_point_element = scr_data_elem['CameraFocalPoint']
            cam_settings.append(float(focal_point_element['x']))
            cam_settings.append(float(focal_point_element['y']))
            cam_settings.append(float(focal_point_element['z']))

            position_element = scr_data_elem['CameraPosition']
            cam_settings.append(float(position_element['x']))
            cam_settings.append(float(position_element['y']))
            cam_settings.append(float(position_element['z']))

            view_up_element = scr_data_elem['CameraViewUp']
            cam_settings.append(float(view_up_element['x']))
            cam_settings.append(float(view_up_element['y']))
            cam_settings.append(float(view_up_element['z']))

            scr_data.extractCameraInfoFromList(cam_settings)

            # getting rid of unicode in the keys
            metadata_dict = {}
            for k, v in list(scr_data_elem['metadata'].items()):
                metadata_dict[str(k)] = v

            scr_data.metadata = metadata_dict

            # checking for extra metadata entries added
            # you may reset this list after bumping up the version of json file
            # todo fix - we will be permissive as far as DisplayMinMaxInfo
            # extra_metadata_keys = ['DisplayMinMaxInfo']
            extra_metadata_keys = []

            for key in extra_metadata_keys:
                if key not in list(metadata_dict.keys()):
                    raise KeyError(
                        'Missing key in the metadata: {}'.format(key))

            # scr_data.screenshotGraphicsWidget = self.screenshotGraphicsWidget

            self.screenshotDataDict[scr_data.screenshotName] = scr_data