source: sasview/src/sas/sasgui/guiframe/report_image_handler.py @ 0cf4f84

magnetic_scattrelease-4.2.2ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249unittest-saveload
Last change on this file since 0cf4f84 was 0cf4f84, checked in by krzywon, 6 years ago

Create base report image handler for all images and modify fitting to perspective to use the image handler.

  • Property mode set to 100644
File size: 1.5 KB
Line 
1import wx
2
3
4class ReportImageHandler:
5
6
7    class _ReportImageHandler:
8
9        def __init__(self):
10            self.img_holder = wx.MemoryFSHandler()
11            wx.FileSystem.AddHandler(wx.MemoryFSHandler())
12            self.refs = {}
13            self.indices = []
14
15        def set_figs(self, figs, bitmaps, perspective):
16            imgs = []
17            refs = []
18            if figs is None or len(figs) == 0:
19                figs = [None]
20            for fig in figs:
21                if fig is not None:
22                    ind = figs.index(fig)
23                    bitmap = bitmaps[ind]
24
25                # name of the fig
26                name = self.create_unique_name(perspective)
27                # AddFile, image can be retrieved with 'memory:filename'
28                ref = 'memory:' + name
29                self.refs[ref] = fig
30                self.img_holder.AddFile(name, bitmap, wx.BITMAP_TYPE_PNG)
31                refs.append(ref)
32                imgs.append(fig)
33            return imgs, refs
34
35        def create_unique_name(self, perspective, index=None):
36            if not index:
37                index = len(self.indices)
38            if index in self.indices:
39                name = self.create_unique_name(index + 1)
40            else:
41                self.indices.append(index)
42                name = 'img_{}_{:03d}.png'.format(str(perspective), index)
43            return name
44
45
46    instance = None
47
48    def __init__(self):
49        if not ReportImageHandler.instance:
50            ReportImageHandler.instance = ReportImageHandler._ReportImageHandler()
Note: See TracBrowser for help on using the repository browser.