wolfhece 2.1.38__py3-none-any.whl → 2.1.39__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- wolfhece/PyPalette.py +282 -268
 - wolfhece/apps/splashscreen.py +2 -2
 - wolfhece/apps/version.py +1 -1
 - wolfhece/libs/wolfogl.cp310-win_amd64.pyd +0 -0
 - wolfhece/pyviews.py +10 -6
 - wolfhece/wolf_array.py +23 -4
 - wolfhece/wolfresults_2D.py +14 -8
 - {wolfhece-2.1.38.dist-info → wolfhece-2.1.39.dist-info}/METADATA +1 -1
 - {wolfhece-2.1.38.dist-info → wolfhece-2.1.39.dist-info}/RECORD +12 -12
 - {wolfhece-2.1.38.dist-info → wolfhece-2.1.39.dist-info}/WHEEL +0 -0
 - {wolfhece-2.1.38.dist-info → wolfhece-2.1.39.dist-info}/entry_points.txt +0 -0
 - {wolfhece-2.1.38.dist-info → wolfhece-2.1.39.dist-info}/top_level.txt +0 -0
 
    
        wolfhece/PyPalette.py
    CHANGED
    
    | 
         @@ -16,7 +16,7 @@ import numpy as np 
     | 
|
| 
       16 
16 
     | 
    
         
             
            import numpy.ma as ma
         
     | 
| 
       17 
17 
     | 
    
         
             
            from bisect import bisect_left
         
     | 
| 
       18 
18 
     | 
    
         
             
            import matplotlib.pyplot as plt
         
     | 
| 
       19 
     | 
    
         
            -
            from matplotlib.colors import LinearSegmentedColormap,Normalize
         
     | 
| 
      
 19 
     | 
    
         
            +
            from matplotlib.colors import LinearSegmentedColormap, Normalize
         
     | 
| 
       20 
20 
     | 
    
         
             
            from collections import OrderedDict
         
     | 
| 
       21 
21 
     | 
    
         
             
            import typing
         
     | 
| 
       22 
22 
     | 
    
         
             
            import io
         
     | 
| 
         @@ -26,53 +26,54 @@ from .PyTranslate import _ 
     | 
|
| 
       26 
26 
     | 
    
         
             
            from .CpGrid import CpGrid
         
     | 
| 
       27 
27 
     | 
    
         
             
            from .PyVertex import getRGBfromI, getIfromRGB
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
     | 
    
         
            -
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            class wolfpalette(wx.Frame, LinearSegmentedColormap):
         
     | 
| 
       30 
31 
     | 
    
         
             
                """
         
     | 
| 
       31 
32 
     | 
    
         
             
                Palette de couleurs basée sur l'objet "LinearSegmentedColormap" de Matplotlib (Colormap objects based on lookup tables using linear segments)
         
     | 
| 
       32 
33 
     | 
    
         
             
                """
         
     | 
| 
       33 
     | 
    
         
            -
                filename:str
         
     | 
| 
       34 
     | 
    
         
            -
                nb:int
         
     | 
| 
       35 
     | 
    
         
            -
                colors:np.array
         
     | 
| 
       36 
     | 
    
         
            -
                colorsflt:np.array
         
     | 
| 
       37 
     | 
    
         
            -
                colorsuint8:np.array
         
     | 
| 
      
 34 
     | 
    
         
            +
                filename: str
         
     | 
| 
      
 35 
     | 
    
         
            +
                nb: int
         
     | 
| 
      
 36 
     | 
    
         
            +
                colors: np.array
         
     | 
| 
      
 37 
     | 
    
         
            +
                colorsflt: np.array
         
     | 
| 
      
 38 
     | 
    
         
            +
                colorsuint8: np.array
         
     | 
| 
       38 
39 
     | 
    
         | 
| 
       39 
     | 
    
         
            -
                def __init__(self, parent=None, title=_('Colormap'),w=100,h=500,nseg=1024):
         
     | 
| 
      
 40 
     | 
    
         
            +
                def __init__(self, parent=None, title=_('Colormap'), w=100, h=500, nseg=1024):
         
     | 
| 
       40 
41 
     | 
    
         | 
| 
       41 
     | 
    
         
            -
                    self.filename=''
         
     | 
| 
      
 42 
     | 
    
         
            +
                    self.filename = ''
         
     | 
| 
       42 
43 
     | 
    
         
             
                    self.nb = 0
         
     | 
| 
       43 
44 
     | 
    
         
             
                    self.values = None
         
     | 
| 
       44 
     | 
    
         
            -
                    self.colormin = np.array([1.,1.,1.,1.])
         
     | 
| 
       45 
     | 
    
         
            -
                    self.colormax = np.array([0,0,0,1.])
         
     | 
| 
       46 
     | 
    
         
            -
                    self.nseg=nseg
         
     | 
| 
      
 45 
     | 
    
         
            +
                    self.colormin = np.array([1., 1., 1., 1.])
         
     | 
| 
      
 46 
     | 
    
         
            +
                    self.colormax = np.array([0, 0, 0, 1.])
         
     | 
| 
      
 47 
     | 
    
         
            +
                    self.nseg = nseg
         
     | 
| 
       47 
48 
     | 
    
         
             
                    self.automatic = True
         
     | 
| 
       48 
49 
     | 
    
         
             
                    self.interval_cst = False
         
     | 
| 
       49 
50 
     | 
    
         | 
| 
       50 
51 
     | 
    
         
             
                    self.wx_exists = wx.App.Get() is not None
         
     | 
| 
       51 
52 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
                    #Appel à l'initialisation d'un frame général
         
     | 
| 
       53 
     | 
    
         
            -
                    if(self.wx_exists):
         
     | 
| 
       54 
     | 
    
         
            -
                        wx.Frame.__init__(self, parent, title=title, size=(w,h),style=wx.DEFAULT_FRAME_STYLE)
         
     | 
| 
      
 53 
     | 
    
         
            +
                    # Appel à l'initialisation d'un frame général
         
     | 
| 
      
 54 
     | 
    
         
            +
                    if (self.wx_exists):
         
     | 
| 
      
 55 
     | 
    
         
            +
                        wx.Frame.__init__(self, parent, title=title, size=(w, h), style=wx.DEFAULT_FRAME_STYLE)
         
     | 
| 
       55 
56 
     | 
    
         | 
| 
       56 
     | 
    
         
            -
                    LinearSegmentedColormap.__init__(self,'wolf',{},nseg)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    LinearSegmentedColormap.__init__(self, 'wolf', {}, nseg)
         
     | 
| 
       57 
58 
     | 
    
         
             
                    self.set_bounds()
         
     | 
| 
       58 
59 
     | 
    
         | 
| 
       59 
60 
     | 
    
         
             
                @property
         
     | 
| 
       60 
61 
     | 
    
         
             
                def colormin_uint8(self):
         
     | 
| 
       61 
62 
     | 
    
         
             
                    return self.colormin.astype(np.uint8)*255
         
     | 
| 
       62 
     | 
    
         
            -
             
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
       63 
64 
     | 
    
         
             
                @property
         
     | 
| 
       64 
65 
     | 
    
         
             
                def colormax_uint8(self):
         
     | 
| 
       65 
66 
     | 
    
         
             
                    return self.colormax.astype(np.uint8)*255
         
     | 
| 
       66 
67 
     | 
    
         | 
| 
       67 
68 
     | 
    
         
             
                def get_colors_f32(self):
         
     | 
| 
       68 
69 
     | 
    
         | 
| 
       69 
     | 
    
         
            -
                    colors = self.colorsflt[ 
     | 
| 
      
 70 
     | 
    
         
            +
                    colors = self.colorsflt[:, :3].astype(np.float32)
         
     | 
| 
       70 
71 
     | 
    
         | 
| 
       71 
72 
     | 
    
         
             
                    return colors
         
     | 
| 
       72 
     | 
    
         
            -
             
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
       73 
74 
     | 
    
         
             
                def get_colors_uint8(self):
         
     | 
| 
       74 
     | 
    
         
            -
             
     | 
| 
       75 
     | 
    
         
            -
                    colors = self.colorsflt[ 
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                    colors = self.colorsflt[:, :3].astype(np.uint8) * 255
         
     | 
| 
       76 
77 
     | 
    
         | 
| 
       77 
78 
     | 
    
         
             
                    return colors
         
     | 
| 
       78 
79 
     | 
    
         | 
| 
         @@ -80,66 +81,71 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       80 
81 
     | 
    
         
             
                    self.set_under(tuple(self.colormin))
         
     | 
| 
       81 
82 
     | 
    
         
             
                    self.set_over(tuple(self.colormax))
         
     | 
| 
       82 
83 
     | 
    
         | 
| 
       83 
     | 
    
         
            -
                def get_rgba(self, x:np.ndarray):
         
     | 
| 
      
 84 
     | 
    
         
            +
                def get_rgba(self, x: np.ndarray):
         
     | 
| 
       84 
85 
     | 
    
         
             
                    """Récupération de la couleur en fonction de la valeur x"""
         
     | 
| 
       85 
86 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
                    dval=self.values[-1]-self.values[0]
         
     | 
| 
       87 
     | 
    
         
            -
                    if dval==0.:
         
     | 
| 
       88 
     | 
    
         
            -
                        dval=1.
         
     | 
| 
      
 87 
     | 
    
         
            +
                    dval = self.values[-1]-self.values[0]
         
     | 
| 
      
 88 
     | 
    
         
            +
                    if dval == 0.:
         
     | 
| 
      
 89 
     | 
    
         
            +
                        dval = 1.
         
     | 
| 
       89 
90 
     | 
    
         
             
                    xloc = (x-self.values[0])/dval
         
     | 
| 
       90 
91 
     | 
    
         | 
| 
       91 
92 
     | 
    
         
             
                    if self.interval_cst:
         
     | 
| 
       92 
     | 
    
         
            -
                        rgba = np.ones((xloc.shape[0],xloc.shape[1],4), dtype=np.uint8)
         
     | 
| 
      
 93 
     | 
    
         
            +
                        rgba = np.ones((xloc.shape[0], xloc.shape[1], 4), dtype=np.uint8)
         
     | 
| 
       93 
94 
     | 
    
         | 
| 
       94 
     | 
    
         
            -
                        ij = np.where(xloc<0.)
         
     | 
| 
       95 
     | 
    
         
            -
                        rgba[ij[0],ij[1]] = self.colormin_uint8
         
     | 
| 
       96 
     | 
    
         
            -
                        ij = np.where(xloc>=1.)
         
     | 
| 
       97 
     | 
    
         
            -
                        rgba[ij[0],ij[1]] = self.colormax_uint8
         
     | 
| 
      
 95 
     | 
    
         
            +
                        ij = np.where(xloc < 0.)
         
     | 
| 
      
 96 
     | 
    
         
            +
                        rgba[ij[0], ij[1]] = self.colormin_uint8
         
     | 
| 
      
 97 
     | 
    
         
            +
                        ij = np.where(xloc >= 1.)
         
     | 
| 
      
 98 
     | 
    
         
            +
                        rgba[ij[0], ij[1]] = self.colormax_uint8
         
     | 
| 
       98 
99 
     | 
    
         | 
| 
       99 
100 
     | 
    
         
             
                        for i in range(self.nb-1):
         
     | 
| 
       100 
101 
     | 
    
         
             
                            val1 = (self.values[i]-self.values[0])/dval
         
     | 
| 
       101 
102 
     | 
    
         
             
                            val2 = (self.values[i+1]-self.values[0])/dval
         
     | 
| 
       102 
103 
     | 
    
         
             
                            # c1   = self.colorsflt[i]
         
     | 
| 
       103 
     | 
    
         
            -
                            c1 
     | 
| 
       104 
     | 
    
         
            -
                            ij = np.where((xloc>=val1) & (xloc<val2))
         
     | 
| 
       105 
     | 
    
         
            -
                            rgba[ij[0],ij[1]] = c1
         
     | 
| 
      
 104 
     | 
    
         
            +
                            c1 = self.colorsuint8[i]
         
     | 
| 
      
 105 
     | 
    
         
            +
                            ij = np.where((xloc >= val1) & (xloc < val2))
         
     | 
| 
      
 106 
     | 
    
         
            +
                            rgba[ij[0], ij[1]] = c1
         
     | 
| 
       106 
107 
     | 
    
         | 
| 
       107 
108 
     | 
    
         
             
                        return rgba
         
     | 
| 
       108 
109 
     | 
    
         
             
                    else:
         
     | 
| 
       109 
110 
     | 
    
         
             
                        return self(xloc, bytes=True)
         
     | 
| 
       110 
111 
     | 
    
         | 
| 
       111 
     | 
    
         
            -
                def export_palette_matplotlib(self,name):
         
     | 
| 
      
 112 
     | 
    
         
            +
                def export_palette_matplotlib(self, name):
         
     | 
| 
       112 
113 
     | 
    
         
             
                    cmaps = OrderedDict()
         
     | 
| 
       113 
114 
     | 
    
         
             
                    cmaps['Perceptually Uniform Sequential'] = ['viridis', 'plasma', 'inferno', 'magma', 'cividis']
         
     | 
| 
       114 
115 
     | 
    
         | 
| 
       115 
     | 
    
         
            -
                    cmaps['Sequential'] = ['Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds','YlOrBr', 
     | 
| 
       116 
     | 
    
         
            -
             
     | 
| 
       117 
     | 
    
         
            -
                    cmaps[' 
     | 
| 
      
 116 
     | 
    
         
            +
                    cmaps['Sequential'] = ['Greys', 'Purples', 'Blues', 'Greens', 'Oranges', 'Reds', 'YlOrBr',
         
     | 
| 
      
 117 
     | 
    
         
            +
                                           'YlOrRd', 'OrRd', 'PuRd', 'RdPu', 'BuPu', 'GnBu', 'PuBu', 'YlGnBu', 'PuBuGn', 'BuGn', 'YlGn']
         
     | 
| 
      
 118 
     | 
    
         
            +
                    cmaps['Sequential (2)'] = ['binary', 'gist_yarg', 'gist_gray', 'gray', 'bone', 'pink', 'spring',
         
     | 
| 
      
 119 
     | 
    
         
            +
                                               'summer', 'autumn', 'winter', 'cool', 'Wistia', 'hot', 'afmhot', 'gist_heat', 'copper']
         
     | 
| 
      
 120 
     | 
    
         
            +
                    cmaps['Diverging'] = ['PiYG', 'PRGn', 'BrBG', 'PuOr', 'RdGy', 'RdBu',
         
     | 
| 
      
 121 
     | 
    
         
            +
                                          'RdYlBu', 'RdYlGn', 'Spectral', 'coolwarm', 'bwr', 'seismic']
         
     | 
| 
       118 
122 
     | 
    
         
             
                    cmaps['Cyclic'] = ['twilight', 'twilight_shifted', 'hsv']
         
     | 
| 
       119 
     | 
    
         
            -
                    cmaps['Qualitative'] = ['Pastel1', 'Pastel2', 'Paired', 'Accent', 
     | 
| 
       120 
     | 
    
         
            -
             
     | 
| 
      
 123 
     | 
    
         
            +
                    cmaps['Qualitative'] = ['Pastel1', 'Pastel2', 'Paired', 'Accent',
         
     | 
| 
      
 124 
     | 
    
         
            +
                                            'Dark2', 'Set1', 'Set2', 'Set3', 'tab10', 'tab20', 'tab20b', 'tab20c']
         
     | 
| 
      
 125 
     | 
    
         
            +
                    cmaps['Miscellaneous'] = ['flag', 'prism', 'ocean', 'gist_earth', 'terrain', 'gist_stern', 'gnuplot',
         
     | 
| 
      
 126 
     | 
    
         
            +
                                              'gnuplot2', 'CMRmap', 'cubehelix', 'brg', 'gist_rainbow', 'rainbow', 'jet', 'nipy_spectral', 'gist_ncar']
         
     | 
| 
       121 
127 
     | 
    
         | 
| 
       122 
128 
     | 
    
         
             
                    for cmap_category, cmap_list in cmaps.items():
         
     | 
| 
       123 
     | 
    
         
            -
                        if(name in cmaps[cmap_category]):
         
     | 
| 
       124 
     | 
    
         
            -
                            self=plt.get_cmap(name)
         
     | 
| 
       125 
     | 
    
         
            -
                            self.nb=len(self._segmentdata['blue'])
         
     | 
| 
       126 
     | 
    
         
            -
                            self.values = np.linspace(0.,1.,self.nb)
         
     | 
| 
       127 
     | 
    
         
            -
                            self.colorsflt = np.zeros((self.nb,4) 
     | 
| 
      
 129 
     | 
    
         
            +
                        if (name in cmaps[cmap_category]):
         
     | 
| 
      
 130 
     | 
    
         
            +
                            self = plt.get_cmap(name)
         
     | 
| 
      
 131 
     | 
    
         
            +
                            self.nb = len(self._segmentdata['blue'])
         
     | 
| 
      
 132 
     | 
    
         
            +
                            self.values = np.linspace(0., 1., self.nb, dtype=np.float64)
         
     | 
| 
      
 133 
     | 
    
         
            +
                            self.colorsflt = np.zeros((self.nb, 4), dtype=np.float64)
         
     | 
| 
       128 
134 
     | 
    
         
             
                            for i in range(self.nb):
         
     | 
| 
       129 
     | 
    
         
            -
                                self.colorsflt[i,0]=self._segmentdata['red'][i][2]
         
     | 
| 
       130 
     | 
    
         
            -
                                self.colorsflt[i,1]=self._segmentdata['green'][i][2]
         
     | 
| 
       131 
     | 
    
         
            -
                                self.colorsflt[i,2]=self._segmentdata['blue'][i][2]
         
     | 
| 
       132 
     | 
    
         
            -
                                self.colorsflt[i,3]=self._segmentdata['alpha'][i][2]
         
     | 
| 
       133 
     | 
    
         
            -
                            test=1
         
     | 
| 
      
 135 
     | 
    
         
            +
                                self.colorsflt[i, 0] = self._segmentdata['red'][i][2]
         
     | 
| 
      
 136 
     | 
    
         
            +
                                self.colorsflt[i, 1] = self._segmentdata['green'][i][2]
         
     | 
| 
      
 137 
     | 
    
         
            +
                                self.colorsflt[i, 2] = self._segmentdata['blue'][i][2]
         
     | 
| 
      
 138 
     | 
    
         
            +
                                self.colorsflt[i, 3] = self._segmentdata['alpha'][i][2]
         
     | 
| 
      
 139 
     | 
    
         
            +
                            test = 1
         
     | 
| 
       134 
140 
     | 
    
         
             
                            break
         
     | 
| 
       135 
141 
     | 
    
         
             
                        else:
         
     | 
| 
       136 
     | 
    
         
            -
                            test=1
         
     | 
| 
      
 142 
     | 
    
         
            +
                            test = 1
         
     | 
| 
       137 
143 
     | 
    
         | 
| 
       138 
     | 
    
         
            -
                    return self.nb,self.values,self._segmentdata,self.colorsflt
         
     | 
| 
      
 144 
     | 
    
         
            +
                    return self.nb, self.values, self._segmentdata, self.colorsflt
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
                def distribute_values(self, minval: float = -99999, maxval: float = -99999, step=0, wx_permitted=True):
         
     | 
| 
      
 147 
     | 
    
         
            +
                    """ Distribution des valeurs de la palette
         
     | 
| 
       139 
148 
     | 
    
         | 
| 
       140 
     | 
    
         
            -
                def distribute_values(self, minval:float=-99999, maxval:float=-99999, step=0, wx_permitted=True):
         
     | 
| 
       141 
     | 
    
         
            -
                    """ Distribution des valeurs de la palette 
         
     | 
| 
       142 
     | 
    
         
            -
                    
         
     | 
| 
       143 
149 
     | 
    
         
             
                    :param minval: valeur minimale
         
     | 
| 
       144 
150 
     | 
    
         
             
                    :param maxval: valeur maximale
         
     | 
| 
       145 
151 
     | 
    
         
             
                    :param step: pas de distribution
         
     | 
| 
         @@ -149,31 +155,32 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       149 
155 
     | 
    
         
             
                    """
         
     | 
| 
       150 
156 
     | 
    
         | 
| 
       151 
157 
     | 
    
         
             
                    if self.wx_exists and wx_permitted:
         
     | 
| 
       152 
     | 
    
         
            -
                        if minval 
     | 
| 
       153 
     | 
    
         
            -
                            dlg = wx.TextEntryDialog(None, _('Minimum value'), value 
     | 
| 
      
 158 
     | 
    
         
            +
                        if minval == -99999:
         
     | 
| 
      
 159 
     | 
    
         
            +
                            dlg = wx.TextEntryDialog(None, _('Minimum value'), value=str(self.values[0]))
         
     | 
| 
       154 
160 
     | 
    
         
             
                            ret = dlg.ShowModal()
         
     | 
| 
       155 
161 
     | 
    
         
             
                            self.values[0] = dlg.GetValue()
         
     | 
| 
       156 
162 
     | 
    
         
             
                            dlg.Destroy()
         
     | 
| 
       157 
163 
     | 
    
         
             
                        else:
         
     | 
| 
       158 
164 
     | 
    
         
             
                            self.values[0] = minval
         
     | 
| 
       159 
165 
     | 
    
         | 
| 
       160 
     | 
    
         
            -
                        if maxval 
     | 
| 
      
 166 
     | 
    
         
            +
                        if maxval == -99999 and step == 0:
         
     | 
| 
       161 
167 
     | 
    
         | 
| 
       162 
     | 
    
         
            -
                            dlg = wx.MessageDialog(None, _('Would you like to set the incremental step value ?'), 
     | 
| 
      
 168 
     | 
    
         
            +
                            dlg = wx.MessageDialog(None, _('Would you like to set the incremental step value ?'),
         
     | 
| 
      
 169 
     | 
    
         
            +
                                                   style=wx.YES_NO | wx.YES_DEFAULT)
         
     | 
| 
       163 
170 
     | 
    
         
             
                            ret = dlg.ShowModal()
         
     | 
| 
       164 
171 
     | 
    
         
             
                            dlg.Destroy
         
     | 
| 
       165 
172 
     | 
    
         
             
                            if ret == wx.ID_YES:
         
     | 
| 
       166 
     | 
    
         
            -
                                dlg = wx.TextEntryDialog(None, _('Step value'), value 
     | 
| 
      
 173 
     | 
    
         
            +
                                dlg = wx.TextEntryDialog(None, _('Step value'), value='1')
         
     | 
| 
       167 
174 
     | 
    
         
             
                                ret = dlg.ShowModal()
         
     | 
| 
       168 
175 
     | 
    
         
             
                                step = float(dlg.GetValue())
         
     | 
| 
       169 
176 
     | 
    
         
             
                                dlg.Destroy()
         
     | 
| 
       170 
177 
     | 
    
         
             
                            else:
         
     | 
| 
       171 
     | 
    
         
            -
                                dlg = wx.TextEntryDialog(None, _('Maximum value'), value 
     | 
| 
      
 178 
     | 
    
         
            +
                                dlg = wx.TextEntryDialog(None, _('Maximum value'), value=str(self.values[-1]))
         
     | 
| 
       172 
179 
     | 
    
         
             
                                ret = dlg.ShowModal()
         
     | 
| 
       173 
180 
     | 
    
         
             
                                self.values[-1] = float(dlg.GetValue())
         
     | 
| 
       174 
181 
     | 
    
         
             
                                dlg.Destroy()
         
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
                        elif maxval 
     | 
| 
      
 182 
     | 
    
         
            +
             
     | 
| 
      
 183 
     | 
    
         
            +
                        elif maxval != -99999:
         
     | 
| 
       177 
184 
     | 
    
         
             
                            self.values[-1] = maxval
         
     | 
| 
       178 
185 
     | 
    
         
             
                    else:
         
     | 
| 
       179 
186 
     | 
    
         
             
                        if minval != -99999:
         
     | 
| 
         @@ -181,34 +188,35 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       181 
188 
     | 
    
         
             
                        if maxval != -99999:
         
     | 
| 
       182 
189 
     | 
    
         
             
                            self.values[-1] = maxval
         
     | 
| 
       183 
190 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
                    if step==0:
         
     | 
| 
       185 
     | 
    
         
            -
                        self.values = np.linspace(self.values[0], self.values[-1], num=self.nb, 
     | 
| 
      
 191 
     | 
    
         
            +
                    if step == 0:
         
     | 
| 
      
 192 
     | 
    
         
            +
                        self.values = np.linspace(self.values[0], self.values[-1], num=self.nb,
         
     | 
| 
      
 193 
     | 
    
         
            +
                                                  endpoint=True, dtype=np.float64)[0:self.nb]
         
     | 
| 
       186 
194 
     | 
    
         
             
                    else:
         
     | 
| 
       187 
     | 
    
         
            -
                        self.values = np.arange(self.values[0], self.values[0]+(self.nb)*step, step)[0:self.nb]
         
     | 
| 
      
 195 
     | 
    
         
            +
                        self.values = np.arange(self.values[0], self.values[0]+(self.nb)*step, step, dtype=np.float64)[0:self.nb]
         
     | 
| 
       188 
196 
     | 
    
         | 
| 
       189 
197 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       190 
198 
     | 
    
         | 
| 
       191 
     | 
    
         
            -
                def export_image(self,fn='',h_or_v:typing.Literal['h','v',''] ='', figax 
     | 
| 
      
 199 
     | 
    
         
            +
                def export_image(self, fn='', h_or_v: typing.Literal['h', 'v', ''] = '', figax=None):
         
     | 
| 
       192 
200 
     | 
    
         
             
                    """
         
     | 
| 
       193 
201 
     | 
    
         
             
                    Export image from colormap
         
     | 
| 
       194 
202 
     | 
    
         | 
| 
       195 
203 
     | 
    
         
             
                    :param : fn : filepath or io.BytesIO()
         
     | 
| 
       196 
204 
     | 
    
         
             
                    :param : h_or_v : configuration to save 'h' = horizontal, 'v' = vertical, '' = both
         
     | 
| 
       197 
205 
     | 
    
         
             
                    """
         
     | 
| 
       198 
     | 
    
         
            -
                    if fn=='':
         
     | 
| 
       199 
     | 
    
         
            -
                        file=wx.FileDialog(None,"Choose .pal file", wildcard="png (*.png)|*.png|all (*.*)|*.*",style=wx.FD_SAVE)
         
     | 
| 
      
 206 
     | 
    
         
            +
                    if fn == '':
         
     | 
| 
      
 207 
     | 
    
         
            +
                        file = wx.FileDialog(None, "Choose .pal file", wildcard="png (*.png)|*.png|all (*.*)|*.*", style=wx.FD_SAVE)
         
     | 
| 
       200 
208 
     | 
    
         
             
                        if file.ShowModal() == wx.ID_CANCEL:
         
     | 
| 
       201 
209 
     | 
    
         
             
                            return
         
     | 
| 
       202 
210 
     | 
    
         
             
                        else:
         
     | 
| 
       203 
     | 
    
         
            -
                            #récupération du nom de fichier avec chemin d'accès
         
     | 
| 
       204 
     | 
    
         
            -
                            fn =file.GetPath()
         
     | 
| 
      
 211 
     | 
    
         
            +
                            # récupération du nom de fichier avec chemin d'accès
         
     | 
| 
      
 212 
     | 
    
         
            +
                            fn = file.GetPath()
         
     | 
| 
       205 
213 
     | 
    
         | 
| 
       206 
     | 
    
         
            -
                    if h_or_v=='v':
         
     | 
| 
      
 214 
     | 
    
         
            +
                    if h_or_v == 'v':
         
     | 
| 
       207 
215 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       208 
     | 
    
         
            -
                            fig,ax=plt.subplots(1,1)
         
     | 
| 
      
 216 
     | 
    
         
            +
                            fig, ax = plt.subplots(1, 1)
         
     | 
| 
       209 
217 
     | 
    
         
             
                        else:
         
     | 
| 
       210 
     | 
    
         
            -
                            fig,ax = figax
         
     | 
| 
       211 
     | 
    
         
            -
                        plt.colorbar(ScalarMappable(Normalize(self.values[0],self.values[-1]),cmap=self),
         
     | 
| 
      
 218 
     | 
    
         
            +
                            fig, ax = figax
         
     | 
| 
      
 219 
     | 
    
         
            +
                        plt.colorbar(ScalarMappable(Normalize(self.values[0], self.values[-1]), cmap=self),
         
     | 
| 
       212 
220 
     | 
    
         
             
                                     cax=ax,
         
     | 
| 
       213 
221 
     | 
    
         
             
                                     orientation='vertical',
         
     | 
| 
       214 
222 
     | 
    
         
             
                                     extend='both',
         
     | 
| 
         @@ -218,29 +226,29 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       218 
226 
     | 
    
         
             
                                     format='%.3f')
         
     | 
| 
       219 
227 
     | 
    
         
             
                        plt.tick_params(labelsize=14)
         
     | 
| 
       220 
228 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       221 
     | 
    
         
            -
                            fig.set_size_inches((2,10))
         
     | 
| 
      
 229 
     | 
    
         
            +
                            fig.set_size_inches((2, 10))
         
     | 
| 
       222 
230 
     | 
    
         
             
                            fig.tight_layout()
         
     | 
| 
       223 
231 
     | 
    
         | 
| 
       224 
     | 
    
         
            -
                        if fn!='' and fn is not None:
         
     | 
| 
      
 232 
     | 
    
         
            +
                        if fn != '' and fn is not None:
         
     | 
| 
       225 
233 
     | 
    
         
             
                            plt.savefig(fn, format='png')
         
     | 
| 
       226 
234 
     | 
    
         
             
                        # plt.savefig(fn,bbox_inches='tight', format='png')
         
     | 
| 
       227 
     | 
    
         
            -
                    elif h_or_v=='h':
         
     | 
| 
      
 235 
     | 
    
         
            +
                    elif h_or_v == 'h':
         
     | 
| 
       228 
236 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       229 
     | 
    
         
            -
                            fig,ax=plt.subplots(1,1)
         
     | 
| 
      
 237 
     | 
    
         
            +
                            fig, ax = plt.subplots(1, 1)
         
     | 
| 
       230 
238 
     | 
    
         
             
                        else:
         
     | 
| 
       231 
     | 
    
         
            -
                            fig,ax = figax
         
     | 
| 
       232 
     | 
    
         
            -
                        plt.colorbar(ScalarMappable(Normalize(self.values[0],self.values[-1]),cmap=self),
         
     | 
| 
      
 239 
     | 
    
         
            +
                            fig, ax = figax
         
     | 
| 
      
 240 
     | 
    
         
            +
                        plt.colorbar(ScalarMappable(Normalize(self.values[0], self.values[-1]), cmap=self),
         
     | 
| 
       233 
241 
     | 
    
         
             
                                     cax=ax,
         
     | 
| 
       234 
242 
     | 
    
         
             
                                     orientation='horizontal',
         
     | 
| 
       235 
243 
     | 
    
         
             
                                     extend='both',
         
     | 
| 
       236 
244 
     | 
    
         
             
                                     spacing='proportional',
         
     | 
| 
       237 
245 
     | 
    
         
             
                                     ticks=self.values,
         
     | 
| 
       238 
246 
     | 
    
         
             
                                     format='%.3f')
         
     | 
| 
       239 
     | 
    
         
            -
                        plt.tick_params(labelsize=14,rotation=45)
         
     | 
| 
      
 247 
     | 
    
         
            +
                        plt.tick_params(labelsize=14, rotation=45)
         
     | 
| 
       240 
248 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       241 
     | 
    
         
            -
                            fig.set_size_inches((2,10))
         
     | 
| 
      
 249 
     | 
    
         
            +
                            fig.set_size_inches((2, 10))
         
     | 
| 
       242 
250 
     | 
    
         
             
                            fig.tight_layout()
         
     | 
| 
       243 
     | 
    
         
            -
                        if fn!='' and fn is not None:
         
     | 
| 
      
 251 
     | 
    
         
            +
                        if fn != '' and fn is not None:
         
     | 
| 
       244 
252 
     | 
    
         
             
                            plt.savefig(fn, format='png')
         
     | 
| 
       245 
253 
     | 
    
         
             
                        # plt.savefig(fn,bbox_inches='tight', format='png')
         
     | 
| 
       246 
254 
     | 
    
         
             
                    else:
         
     | 
| 
         @@ -249,10 +257,10 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       249 
257 
     | 
    
         
             
                            return
         
     | 
| 
       250 
258 
     | 
    
         | 
| 
       251 
259 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       252 
     | 
    
         
            -
                            fig,ax=plt.subplots(1,1)
         
     | 
| 
      
 260 
     | 
    
         
            +
                            fig, ax = plt.subplots(1, 1)
         
     | 
| 
       253 
261 
     | 
    
         
             
                        else:
         
     | 
| 
       254 
     | 
    
         
            -
                            fig,ax = figax
         
     | 
| 
       255 
     | 
    
         
            -
                        plt.colorbar(ScalarMappable(Normalize(self.values[0],self.values[-1]),cmap=self),
         
     | 
| 
      
 262 
     | 
    
         
            +
                            fig, ax = figax
         
     | 
| 
      
 263 
     | 
    
         
            +
                        plt.colorbar(ScalarMappable(Normalize(self.values[0], self.values[-1]), cmap=self),
         
     | 
| 
       256 
264 
     | 
    
         
             
                                     cax=ax,
         
     | 
| 
       257 
265 
     | 
    
         
             
                                     orientation='vertical',
         
     | 
| 
       258 
266 
     | 
    
         
             
                                     extend='both',
         
     | 
| 
         @@ -260,117 +268,117 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       260 
268 
     | 
    
         
             
                                     ticks=self.values,
         
     | 
| 
       261 
269 
     | 
    
         
             
                                     format='%.3f')
         
     | 
| 
       262 
270 
     | 
    
         
             
                        plt.tick_params(labelsize=14)
         
     | 
| 
       263 
     | 
    
         
            -
                        fig.set_size_inches((2,10))
         
     | 
| 
      
 271 
     | 
    
         
            +
                        fig.set_size_inches((2, 10))
         
     | 
| 
       264 
272 
     | 
    
         
             
                        fig.tight_layout()
         
     | 
| 
       265 
     | 
    
         
            -
                        if fn!='' and fn is not None:
         
     | 
| 
      
 273 
     | 
    
         
            +
                        if fn != '' and fn is not None:
         
     | 
| 
       266 
274 
     | 
    
         
             
                            plt.savefig(fn[:-4]+'_v.png', format='png')
         
     | 
| 
       267 
275 
     | 
    
         | 
| 
       268 
276 
     | 
    
         
             
                        if figax is None:
         
     | 
| 
       269 
     | 
    
         
            -
                            fig,ax=plt.subplots(1,1)
         
     | 
| 
      
 277 
     | 
    
         
            +
                            fig, ax = plt.subplots(1, 1)
         
     | 
| 
       270 
278 
     | 
    
         
             
                        else:
         
     | 
| 
       271 
     | 
    
         
            -
                            fig,ax = figax
         
     | 
| 
      
 279 
     | 
    
         
            +
                            fig, ax = figax
         
     | 
| 
       272 
280 
     | 
    
         | 
| 
       273 
     | 
    
         
            -
                        plt.colorbar(ScalarMappable(Normalize(self.values[0],self.values[-1]),cmap=self),
         
     | 
| 
      
 281 
     | 
    
         
            +
                        plt.colorbar(ScalarMappable(Normalize(self.values[0], self.values[-1]), cmap=self),
         
     | 
| 
       274 
282 
     | 
    
         
             
                                     cax=ax,
         
     | 
| 
       275 
283 
     | 
    
         
             
                                     orientation='horizontal',
         
     | 
| 
       276 
284 
     | 
    
         
             
                                     extend='both',
         
     | 
| 
       277 
285 
     | 
    
         
             
                                     spacing='proportional',
         
     | 
| 
       278 
286 
     | 
    
         
             
                                     ticks=self.values,
         
     | 
| 
       279 
287 
     | 
    
         
             
                                     format='%.3f')
         
     | 
| 
       280 
     | 
    
         
            -
                        plt.tick_params(labelsize=14,rotation=45)
         
     | 
| 
       281 
     | 
    
         
            -
                        fig.set_size_inches((10,2))
         
     | 
| 
      
 288 
     | 
    
         
            +
                        plt.tick_params(labelsize=14, rotation=45)
         
     | 
| 
      
 289 
     | 
    
         
            +
                        fig.set_size_inches((10, 2))
         
     | 
| 
       282 
290 
     | 
    
         
             
                        fig.tight_layout()
         
     | 
| 
       283 
     | 
    
         
            -
                        if fn!='' and fn is not None:
         
     | 
| 
      
 291 
     | 
    
         
            +
                        if fn != '' and fn is not None:
         
     | 
| 
       284 
292 
     | 
    
         
             
                            plt.savefig(fn[:-4]+'_h.png', format='png')
         
     | 
| 
       285 
293 
     | 
    
         | 
| 
       286 
     | 
    
         
            -
                    return fig,ax
         
     | 
| 
      
 294 
     | 
    
         
            +
                    return fig, ax
         
     | 
| 
       287 
295 
     | 
    
         | 
| 
       288 
     | 
    
         
            -
                def plot(self,fig:Figure,ax:plt.Axes):
         
     | 
| 
      
 296 
     | 
    
         
            +
                def plot(self, fig: Figure, ax: plt.Axes):
         
     | 
| 
       289 
297 
     | 
    
         
             
                    gradient = np.linspace(0, 1, 256)
         
     | 
| 
       290 
298 
     | 
    
         
             
                    gradient = np.vstack((gradient, gradient))
         
     | 
| 
       291 
299 
     | 
    
         
             
                    ax.imshow(gradient, aspect='auto', cmap=self)
         
     | 
| 
       292 
300 
     | 
    
         
             
                    ax.set_yticklabels([])
         
     | 
| 
       293 
301 
     | 
    
         | 
| 
       294 
     | 
    
         
            -
                    pos=[]
         
     | 
| 
       295 
     | 
    
         
            -
                    txt=[]
         
     | 
| 
      
 302 
     | 
    
         
            +
                    pos = []
         
     | 
| 
      
 303 
     | 
    
         
            +
                    txt = []
         
     | 
| 
       296 
304 
     | 
    
         | 
| 
       297 
     | 
    
         
            -
                    dval=(self.values[-1]-self.values[0])
         
     | 
| 
       298 
     | 
    
         
            -
                    if dval==0.:
         
     | 
| 
       299 
     | 
    
         
            -
                        dval=1.
         
     | 
| 
      
 305 
     | 
    
         
            +
                    dval = (self.values[-1]-self.values[0])
         
     | 
| 
      
 306 
     | 
    
         
            +
                    if dval == 0.:
         
     | 
| 
      
 307 
     | 
    
         
            +
                        dval = 1.
         
     | 
| 
       300 
308 
     | 
    
         | 
| 
       301 
309 
     | 
    
         
             
                    for curval in self.values:
         
     | 
| 
       302 
310 
     | 
    
         
             
                        pos.append((curval-self.values[0])/dval*256.)
         
     | 
| 
       303 
311 
     | 
    
         
             
                        txt.append("{0:.3f}".format(curval))
         
     | 
| 
       304 
312 
     | 
    
         | 
| 
       305 
313 
     | 
    
         
             
                    ax.set_xticks(pos)
         
     | 
| 
       306 
     | 
    
         
            -
                    ax.set_xticklabels(txt,rotation=30,fontsize=6)
         
     | 
| 
      
 314 
     | 
    
         
            +
                    ax.set_xticklabels(txt, rotation=30, fontsize=6)
         
     | 
| 
       307 
315 
     | 
    
         | 
| 
       308 
     | 
    
         
            -
                def fillgrid(self,gridto:CpGrid):
         
     | 
| 
       309 
     | 
    
         
            -
                    gridto.SetColLabelValue(0,'Value')
         
     | 
| 
       310 
     | 
    
         
            -
                    gridto.SetColLabelValue(1,'R')
         
     | 
| 
       311 
     | 
    
         
            -
                    gridto.SetColLabelValue(2,'G')
         
     | 
| 
       312 
     | 
    
         
            -
                    gridto.SetColLabelValue(3,'B')
         
     | 
| 
      
 316 
     | 
    
         
            +
                def fillgrid(self, gridto: CpGrid):
         
     | 
| 
      
 317 
     | 
    
         
            +
                    gridto.SetColLabelValue(0, 'Value')
         
     | 
| 
      
 318 
     | 
    
         
            +
                    gridto.SetColLabelValue(1, 'R')
         
     | 
| 
      
 319 
     | 
    
         
            +
                    gridto.SetColLabelValue(2, 'G')
         
     | 
| 
      
 320 
     | 
    
         
            +
                    gridto.SetColLabelValue(3, 'B')
         
     | 
| 
       313 
321 
     | 
    
         | 
| 
       314 
     | 
    
         
            -
                    nb=gridto.GetNumberRows()
         
     | 
| 
       315 
     | 
    
         
            -
                    if len(self.values)-nb>0:
         
     | 
| 
      
 322 
     | 
    
         
            +
                    nb = gridto.GetNumberRows()
         
     | 
| 
      
 323 
     | 
    
         
            +
                    if len(self.values)-nb > 0:
         
     | 
| 
       316 
324 
     | 
    
         
             
                        gridto.AppendRows(len(self.values)-nb)
         
     | 
| 
       317 
325 
     | 
    
         | 
| 
       318 
     | 
    
         
            -
                    k=0
         
     | 
| 
       319 
     | 
    
         
            -
                    for curv,rgba in zip(self.values,self.colors):
         
     | 
| 
       320 
     | 
    
         
            -
                        gridto.SetCellValue(k,0,str(curv))
         
     | 
| 
       321 
     | 
    
         
            -
                        gridto.SetCellValue(k,1,str(rgba[0]))
         
     | 
| 
       322 
     | 
    
         
            -
                        gridto.SetCellValue(k,2,str(rgba[1]))
         
     | 
| 
       323 
     | 
    
         
            -
                        gridto.SetCellValue(k,3,str(rgba[2]))
         
     | 
| 
       324 
     | 
    
         
            -
                        k+=1
         
     | 
| 
      
 326 
     | 
    
         
            +
                    k = 0
         
     | 
| 
      
 327 
     | 
    
         
            +
                    for curv, rgba in zip(self.values, self.colors):
         
     | 
| 
      
 328 
     | 
    
         
            +
                        gridto.SetCellValue(k, 0, str(curv))
         
     | 
| 
      
 329 
     | 
    
         
            +
                        gridto.SetCellValue(k, 1, str(rgba[0]))
         
     | 
| 
      
 330 
     | 
    
         
            +
                        gridto.SetCellValue(k, 2, str(rgba[1]))
         
     | 
| 
      
 331 
     | 
    
         
            +
                        gridto.SetCellValue(k, 3, str(rgba[2]))
         
     | 
| 
      
 332 
     | 
    
         
            +
                        k += 1
         
     | 
| 
       325 
333 
     | 
    
         | 
| 
       326 
334 
     | 
    
         
             
                    nb = gridto.GetNumberRows()
         
     | 
| 
       327 
     | 
    
         
            -
                    while k<nb:
         
     | 
| 
       328 
     | 
    
         
            -
                        gridto.SetCellValue(k,0,'')
         
     | 
| 
       329 
     | 
    
         
            -
                        gridto.SetCellValue(k,1,'')
         
     | 
| 
       330 
     | 
    
         
            -
                        gridto.SetCellValue(k,2,'')
         
     | 
| 
       331 
     | 
    
         
            -
                        gridto.SetCellValue(k,3,'')
         
     | 
| 
       332 
     | 
    
         
            -
                        k+=1
         
     | 
| 
      
 335 
     | 
    
         
            +
                    while k < nb:
         
     | 
| 
      
 336 
     | 
    
         
            +
                        gridto.SetCellValue(k, 0, '')
         
     | 
| 
      
 337 
     | 
    
         
            +
                        gridto.SetCellValue(k, 1, '')
         
     | 
| 
      
 338 
     | 
    
         
            +
                        gridto.SetCellValue(k, 2, '')
         
     | 
| 
      
 339 
     | 
    
         
            +
                        gridto.SetCellValue(k, 3, '')
         
     | 
| 
      
 340 
     | 
    
         
            +
                        k += 1
         
     | 
| 
       333 
341 
     | 
    
         | 
| 
       334 
     | 
    
         
            -
                def updatefromgrid(self,gridfrom:CpGrid):
         
     | 
| 
       335 
     | 
    
         
            -
                    nbl=gridfrom.GetNumberRows()
         
     | 
| 
      
 342 
     | 
    
         
            +
                def updatefromgrid(self, gridfrom: CpGrid):
         
     | 
| 
      
 343 
     | 
    
         
            +
                    nbl = gridfrom.GetNumberRows()
         
     | 
| 
       336 
344 
     | 
    
         | 
| 
       337 
345 
     | 
    
         
             
                    for i in range(nbl):
         
     | 
| 
       338 
     | 
    
         
            -
                        if gridfrom.GetCellValue(i,0) =='':
         
     | 
| 
       339 
     | 
    
         
            -
                            nbl=i-1
         
     | 
| 
      
 346 
     | 
    
         
            +
                        if gridfrom.GetCellValue(i, 0) == '':
         
     | 
| 
      
 347 
     | 
    
         
            +
                            nbl = i-1
         
     | 
| 
       340 
348 
     | 
    
         
             
                            break
         
     | 
| 
       341 
349 
     | 
    
         | 
| 
       342 
350 
     | 
    
         
             
                    if i < self.nb:
         
     | 
| 
       343 
351 
     | 
    
         
             
                        self.nb = i
         
     | 
| 
       344 
     | 
    
         
            -
                        self.values=self.values[0:i]
         
     | 
| 
       345 
     | 
    
         
            -
                        self.colors=self.colors[0:i 
     | 
| 
      
 352 
     | 
    
         
            +
                        self.values = self.values[0:i]
         
     | 
| 
      
 353 
     | 
    
         
            +
                        self.colors = self.colors[0:i, :]
         
     | 
| 
       346 
354 
     | 
    
         
             
                    else:
         
     | 
| 
       347 
355 
     | 
    
         
             
                        self.nb = i
         
     | 
| 
       348 
356 
     | 
    
         
             
                        oldvalues = self.values
         
     | 
| 
       349 
357 
     | 
    
         
             
                        oldcolors = self.colors
         
     | 
| 
       350 
     | 
    
         
            -
                        self.values = np.zeros(self.nb 
     | 
| 
       351 
     | 
    
         
            -
                        self.colors = np.zeros((self.nb,4) 
     | 
| 
      
 358 
     | 
    
         
            +
                        self.values = np.zeros(self.nb, dtype=np.float64)
         
     | 
| 
      
 359 
     | 
    
         
            +
                        self.colors = np.zeros((self.nb, 4), dtype=int)
         
     | 
| 
       352 
360 
     | 
    
         
             
                        self.values[0:len(oldvalues)] = oldvalues
         
     | 
| 
       353 
     | 
    
         
            -
                        self.colors[0:len(oldcolors) 
     | 
| 
      
 361 
     | 
    
         
            +
                        self.colors[0:len(oldcolors), :] = oldcolors
         
     | 
| 
       354 
362 
     | 
    
         | 
| 
       355 
363 
     | 
    
         
             
                    update = False
         
     | 
| 
       356 
364 
     | 
    
         | 
| 
       357 
365 
     | 
    
         
             
                    for k in range(self.nb):
         
     | 
| 
       358 
366 
     | 
    
         | 
| 
       359 
     | 
    
         
            -
                        update = update or self.values[k]!=float(gridfrom.GetCellValue(k,0))
         
     | 
| 
       360 
     | 
    
         
            -
                        update = update or self.colors[k,0]!=float(gridfrom.GetCellValue(k,1))
         
     | 
| 
       361 
     | 
    
         
            -
                        update = update or self.colors[k,1]!=float(gridfrom.GetCellValue(k,2))
         
     | 
| 
       362 
     | 
    
         
            -
                        update = update or self.colors[k,2]!=float(gridfrom.GetCellValue(k,3))
         
     | 
| 
      
 367 
     | 
    
         
            +
                        update = update or self.values[k] != float(gridfrom.GetCellValue(k, 0))
         
     | 
| 
      
 368 
     | 
    
         
            +
                        update = update or self.colors[k, 0] != float(gridfrom.GetCellValue(k, 1))
         
     | 
| 
      
 369 
     | 
    
         
            +
                        update = update or self.colors[k, 1] != float(gridfrom.GetCellValue(k, 2))
         
     | 
| 
      
 370 
     | 
    
         
            +
                        update = update or self.colors[k, 2] != float(gridfrom.GetCellValue(k, 3))
         
     | 
| 
       363 
371 
     | 
    
         | 
| 
       364 
     | 
    
         
            -
                        self.values[k]=float(gridfrom.GetCellValue(k,0))
         
     | 
| 
       365 
     | 
    
         
            -
                        self.colors[k,0]=int(gridfrom.GetCellValue(k,1))
         
     | 
| 
       366 
     | 
    
         
            -
                        self.colors[k,1]=int(gridfrom.GetCellValue(k,2))
         
     | 
| 
       367 
     | 
    
         
            -
                        self.colors[k,2]=int(gridfrom.GetCellValue(k,3))
         
     | 
| 
      
 372 
     | 
    
         
            +
                        self.values[k] = float(gridfrom.GetCellValue(k, 0))
         
     | 
| 
      
 373 
     | 
    
         
            +
                        self.colors[k, 0] = int(gridfrom.GetCellValue(k, 1))
         
     | 
| 
      
 374 
     | 
    
         
            +
                        self.colors[k, 1] = int(gridfrom.GetCellValue(k, 2))
         
     | 
| 
      
 375 
     | 
    
         
            +
                        self.colors[k, 2] = int(gridfrom.GetCellValue(k, 3))
         
     | 
| 
       368 
376 
     | 
    
         | 
| 
       369 
377 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       370 
378 
     | 
    
         | 
| 
       371 
379 
     | 
    
         
             
                    return update
         
     | 
| 
       372 
380 
     | 
    
         | 
| 
       373 
     | 
    
         
            -
                def updatefrompalette(self,srcpal):
         
     | 
| 
      
 381 
     | 
    
         
            +
                def updatefrompalette(self, srcpal):
         
     | 
| 
       374 
382 
     | 
    
         
             
                    """
         
     | 
| 
       375 
383 
     | 
    
         
             
                    Mise à jour de la palette sur base d'une autre
         
     | 
| 
       376 
384 
     | 
    
         | 
| 
         @@ -378,131 +386,137 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       378 
386 
     | 
    
         
             
                    """
         
     | 
| 
       379 
387 
     | 
    
         | 
| 
       380 
388 
     | 
    
         
             
                    for k in range(len(srcpal.values)):
         
     | 
| 
       381 
     | 
    
         
            -
                        self.values[k]=srcpal.values[k]
         
     | 
| 
      
 389 
     | 
    
         
            +
                        self.values[k] = srcpal.values[k]
         
     | 
| 
       382 
390 
     | 
    
         | 
| 
       383 
391 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       384 
392 
     | 
    
         | 
| 
       385 
     | 
    
         
            -
                def lookupcolor(self,x):
         
     | 
| 
       386 
     | 
    
         
            -
                    if x < self.values[0]: 
     | 
| 
       387 
     | 
    
         
            -
             
     | 
| 
      
 393 
     | 
    
         
            +
                def lookupcolor(self, x):
         
     | 
| 
      
 394 
     | 
    
         
            +
                    if x < self.values[0]:
         
     | 
| 
      
 395 
     | 
    
         
            +
                        return wx.Colour(self.colormin)
         
     | 
| 
      
 396 
     | 
    
         
            +
                    if x > self.values[-1]:
         
     | 
| 
      
 397 
     | 
    
         
            +
                        return wx.Colour(self.colormax)
         
     | 
| 
       388 
398 
     | 
    
         | 
| 
       389 
399 
     | 
    
         
             
                    i = bisect_left(self.values, x)
         
     | 
| 
       390 
400 
     | 
    
         
             
                    k = (x - self.values[i-1])/(self.values[i] - self.values[i-1])
         
     | 
| 
       391 
401 
     | 
    
         | 
| 
       392 
     | 
    
         
            -
                    r=int(k*(float(self.colors[i,0]-self.colors[i-1,0]))) + self.colors[i-1,0]
         
     | 
| 
       393 
     | 
    
         
            -
                    g=int(k*(float(self.colors[i,1]-self.colors[i-1,1]))) + self.colors[i-1,1]
         
     | 
| 
       394 
     | 
    
         
            -
                    b=int(k*(float(self.colors[i,2]-self.colors[i-1,2]))) + self.colors[i-1,2]
         
     | 
| 
       395 
     | 
    
         
            -
                    a=int(k*(float(self.colors[i,3]-self.colors[i-1,3]))) + self.colors[i-1,3]
         
     | 
| 
      
 402 
     | 
    
         
            +
                    r = int(k*(float(self.colors[i, 0]-self.colors[i-1, 0]))) + self.colors[i-1, 0]
         
     | 
| 
      
 403 
     | 
    
         
            +
                    g = int(k*(float(self.colors[i, 1]-self.colors[i-1, 1]))) + self.colors[i-1, 1]
         
     | 
| 
      
 404 
     | 
    
         
            +
                    b = int(k*(float(self.colors[i, 2]-self.colors[i-1, 2]))) + self.colors[i-1, 2]
         
     | 
| 
      
 405 
     | 
    
         
            +
                    a = int(k*(float(self.colors[i, 3]-self.colors[i-1, 3]))) + self.colors[i-1, 3]
         
     | 
| 
       396 
406 
     | 
    
         | 
| 
       397 
     | 
    
         
            -
                    y = wx.Colour(r,g,b,a)
         
     | 
| 
      
 407 
     | 
    
         
            +
                    y = wx.Colour(r, g, b, a)
         
     | 
| 
       398 
408 
     | 
    
         | 
| 
       399 
409 
     | 
    
         
             
                    return y
         
     | 
| 
       400 
410 
     | 
    
         | 
| 
       401 
     | 
    
         
            -
                def lookupcolorflt(self,x):
         
     | 
| 
       402 
     | 
    
         
            -
                    if x < self.values[0]: 
     | 
| 
       403 
     | 
    
         
            -
             
     | 
| 
      
 411 
     | 
    
         
            +
                def lookupcolorflt(self, x):
         
     | 
| 
      
 412 
     | 
    
         
            +
                    if x < self.values[0]:
         
     | 
| 
      
 413 
     | 
    
         
            +
                        return wx.Colour(self.colormin)
         
     | 
| 
      
 414 
     | 
    
         
            +
                    if x > self.values[-1]:
         
     | 
| 
      
 415 
     | 
    
         
            +
                        return wx.Colour(self.colormax)
         
     | 
| 
       404 
416 
     | 
    
         | 
| 
       405 
417 
     | 
    
         
             
                    i = bisect_left(self.values, x)
         
     | 
| 
       406 
418 
     | 
    
         
             
                    k = (x - self.values[i-1])/(self.values[i] - self.values[i-1])
         
     | 
| 
       407 
419 
     | 
    
         | 
| 
       408 
     | 
    
         
            -
                    r=k*(self.colorsflt[i,0]-self.colorsflt[i-1,0]) + self.colorsflt[i-1,0]
         
     | 
| 
       409 
     | 
    
         
            -
                    g=k*(self.colorsflt[i,1]-self.colorsflt[i-1,1]) + self.colorsflt[i-1,1]
         
     | 
| 
       410 
     | 
    
         
            -
                    b=k*(self.colorsflt[i,2]-self.colorsflt[i-1,2]) + self.colorsflt[i-1,2]
         
     | 
| 
       411 
     | 
    
         
            -
                    a=k*(self.colorsflt[i,3]-self.colorsflt[i-1,3]) + self.colorsflt[i-1,3]
         
     | 
| 
      
 420 
     | 
    
         
            +
                    r = k*(self.colorsflt[i, 0]-self.colorsflt[i-1, 0]) + self.colorsflt[i-1, 0]
         
     | 
| 
      
 421 
     | 
    
         
            +
                    g = k*(self.colorsflt[i, 1]-self.colorsflt[i-1, 1]) + self.colorsflt[i-1, 1]
         
     | 
| 
      
 422 
     | 
    
         
            +
                    b = k*(self.colorsflt[i, 2]-self.colorsflt[i-1, 2]) + self.colorsflt[i-1, 2]
         
     | 
| 
      
 423 
     | 
    
         
            +
                    a = k*(self.colorsflt[i, 3]-self.colorsflt[i-1, 3]) + self.colorsflt[i-1, 3]
         
     | 
| 
       412 
424 
     | 
    
         | 
| 
       413 
     | 
    
         
            -
                    y=[r,g,b,a]
         
     | 
| 
      
 425 
     | 
    
         
            +
                    y = [r, g, b, a]
         
     | 
| 
       414 
426 
     | 
    
         
             
                    return y
         
     | 
| 
       415 
427 
     | 
    
         | 
| 
       416 
     | 
    
         
            -
                def lookupcolorrgb(self,x):
         
     | 
| 
       417 
     | 
    
         
            -
                    if x < self.values[0]: 
     | 
| 
       418 
     | 
    
         
            -
             
     | 
| 
      
 428 
     | 
    
         
            +
                def lookupcolorrgb(self, x):
         
     | 
| 
      
 429 
     | 
    
         
            +
                    if x < self.values[0]:
         
     | 
| 
      
 430 
     | 
    
         
            +
                        return wx.Colour(self.colormin)
         
     | 
| 
      
 431 
     | 
    
         
            +
                    if x > self.values[-1]:
         
     | 
| 
      
 432 
     | 
    
         
            +
                        return wx.Colour(self.colormax)
         
     | 
| 
       419 
433 
     | 
    
         | 
| 
       420 
434 
     | 
    
         
             
                    i = bisect_left(self.values, x)
         
     | 
| 
       421 
435 
     | 
    
         
             
                    k = (x - self.values[i-1])/(self.values[i] - self.values[i-1])
         
     | 
| 
       422 
436 
     | 
    
         | 
| 
       423 
     | 
    
         
            -
                    r=int(k*(float(self.colors[i,0]-self.colors[i-1,0]))) + self.colors[i-1,0]
         
     | 
| 
       424 
     | 
    
         
            -
                    g=int(k*(float(self.colors[i,1]-self.colors[i-1,1]))) + self.colors[i-1,1]
         
     | 
| 
       425 
     | 
    
         
            -
                    b=int(k*(float(self.colors[i,2]-self.colors[i-1,2]))) + self.colors[i-1,2]
         
     | 
| 
       426 
     | 
    
         
            -
                    a=int(k*(float(self.colors[i,3]-self.colors[i-1,3]))) + self.colors[i-1,3]
         
     | 
| 
      
 437 
     | 
    
         
            +
                    r = int(k*(float(self.colors[i, 0]-self.colors[i-1, 0]))) + self.colors[i-1, 0]
         
     | 
| 
      
 438 
     | 
    
         
            +
                    g = int(k*(float(self.colors[i, 1]-self.colors[i-1, 1]))) + self.colors[i-1, 1]
         
     | 
| 
      
 439 
     | 
    
         
            +
                    b = int(k*(float(self.colors[i, 2]-self.colors[i-1, 2]))) + self.colors[i-1, 2]
         
     | 
| 
      
 440 
     | 
    
         
            +
                    a = int(k*(float(self.colors[i, 3]-self.colors[i-1, 3]))) + self.colors[i-1, 3]
         
     | 
| 
       427 
441 
     | 
    
         | 
| 
       428 
     | 
    
         
            -
                    return r,g,b,a
         
     | 
| 
      
 442 
     | 
    
         
            +
                    return r, g, b, a
         
     | 
| 
       429 
443 
     | 
    
         | 
| 
       430 
444 
     | 
    
         
             
                def default16(self):
         
     | 
| 
       431 
445 
     | 
    
         
             
                    """Palette 16 coulrurs par défaut dans WOLF"""
         
     | 
| 
       432 
446 
     | 
    
         | 
| 
       433 
     | 
    
         
            -
                    self.nb=16
         
     | 
| 
       434 
     | 
    
         
            -
                    self.values = np.linspace(0.,1.,16)
         
     | 
| 
       435 
     | 
    
         
            -
                    self.colors = np.zeros((self.nb,4) 
     | 
| 
       436 
     | 
    
         
            -
                    self.colorsflt = np.zeros((self.nb,4) 
     | 
| 
       437 
     | 
    
         
            -
             
     | 
| 
       438 
     | 
    
         
            -
                    self.colors[0 
     | 
| 
       439 
     | 
    
         
            -
                    self.colors[1 
     | 
| 
       440 
     | 
    
         
            -
                    self.colors[2 
     | 
| 
       441 
     | 
    
         
            -
                    self.colors[3 
     | 
| 
       442 
     | 
    
         
            -
                    self.colors[4 
     | 
| 
       443 
     | 
    
         
            -
                    self.colors[5 
     | 
| 
       444 
     | 
    
         
            -
                    self.colors[6 
     | 
| 
       445 
     | 
    
         
            -
                    self.colors[7 
     | 
| 
       446 
     | 
    
         
            -
                    self.colors[8 
     | 
| 
       447 
     | 
    
         
            -
                    self.colors[9 
     | 
| 
       448 
     | 
    
         
            -
                    self.colors[10 
     | 
| 
       449 
     | 
    
         
            -
                    self.colors[11 
     | 
| 
       450 
     | 
    
         
            -
                    self.colors[12 
     | 
| 
       451 
     | 
    
         
            -
                    self.colors[13 
     | 
| 
       452 
     | 
    
         
            -
                    self.colors[14 
     | 
| 
       453 
     | 
    
         
            -
                    self.colors[15 
     | 
| 
      
 447 
     | 
    
         
            +
                    self.nb = 16
         
     | 
| 
      
 448 
     | 
    
         
            +
                    self.values = np.linspace(0., 1., 16, dtype=np.float64)
         
     | 
| 
      
 449 
     | 
    
         
            +
                    self.colors = np.zeros((self.nb, 4), dtype=int)
         
     | 
| 
      
 450 
     | 
    
         
            +
                    self.colorsflt = np.zeros((self.nb, 4), dtype=np.float64)
         
     | 
| 
      
 451 
     | 
    
         
            +
             
     | 
| 
      
 452 
     | 
    
         
            +
                    self.colors[0, :] = [128, 255, 255, 255]
         
     | 
| 
      
 453 
     | 
    
         
            +
                    self.colors[1, :] = [89, 172, 255, 255]
         
     | 
| 
      
 454 
     | 
    
         
            +
                    self.colors[2, :] = [72, 72, 255, 255]
         
     | 
| 
      
 455 
     | 
    
         
            +
                    self.colors[3, :] = [0, 0, 255, 255]
         
     | 
| 
      
 456 
     | 
    
         
            +
                    self.colors[4, :] = [0, 128, 0, 255]
         
     | 
| 
      
 457 
     | 
    
         
            +
                    self.colors[5, :] = [0, 221, 55, 255]
         
     | 
| 
      
 458 
     | 
    
         
            +
                    self.colors[6, :] = [128, 255, 128, 255]
         
     | 
| 
      
 459 
     | 
    
         
            +
                    self.colors[7, :] = [255, 255, 0, 255]
         
     | 
| 
      
 460 
     | 
    
         
            +
                    self.colors[8, :] = [255, 128, 0, 255]
         
     | 
| 
      
 461 
     | 
    
         
            +
                    self.colors[9, :] = [235, 174, 63, 255]
         
     | 
| 
      
 462 
     | 
    
         
            +
                    self.colors[10, :] = [255, 0, 0, 255]
         
     | 
| 
      
 463 
     | 
    
         
            +
                    self.colors[11, :] = [209, 71, 12, 255]
         
     | 
| 
      
 464 
     | 
    
         
            +
                    self.colors[12, :] = [128, 0, 0, 255]
         
     | 
| 
      
 465 
     | 
    
         
            +
                    self.colors[13, :] = [185, 0, 0, 255]
         
     | 
| 
      
 466 
     | 
    
         
            +
                    self.colors[14, :] = [111, 111, 111, 255]
         
     | 
| 
      
 467 
     | 
    
         
            +
                    self.colors[15, :] = [192, 192, 192, 255]
         
     | 
| 
       454 
468 
     | 
    
         | 
| 
       455 
469 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       456 
470 
     | 
    
         | 
| 
       457 
471 
     | 
    
         
             
                def set_values_colors(self,
         
     | 
| 
       458 
     | 
    
         
            -
                                      values:typing.Union[list[float], np.ndarray],
         
     | 
| 
       459 
     | 
    
         
            -
                                      colors:typing.Union[list[tuple[int]], np.ndarray]):
         
     | 
| 
      
 472 
     | 
    
         
            +
                                      values: typing.Union[list[float], np.ndarray],
         
     | 
| 
      
 473 
     | 
    
         
            +
                                      colors: typing.Union[list[tuple[int]], np.ndarray]):
         
     | 
| 
       460 
474 
     | 
    
         
             
                    """ Mise à jour des valeurs et couleurs de la palette """
         
     | 
| 
       461 
475 
     | 
    
         | 
| 
       462 
476 
     | 
    
         
             
                    assert len(values) == len(colors), "Length of values and colors must be the same"
         
     | 
| 
       463 
477 
     | 
    
         
             
                    assert len(values) > 1, "At least 2 values are required"
         
     | 
| 
       464 
     | 
    
         
            -
                    assert len(colors[0]) in [3,4], "Colors must be in RGB or RGBA format"
         
     | 
| 
      
 478 
     | 
    
         
            +
                    assert len(colors[0]) in [3, 4], "Colors must be in RGB or RGBA format"
         
     | 
| 
       465 
479 
     | 
    
         | 
| 
       466 
480 
     | 
    
         
             
                    self.nb = len(values)
         
     | 
| 
       467 
     | 
    
         
            -
                    self.values = np.asarray(values)
         
     | 
| 
      
 481 
     | 
    
         
            +
                    self.values = np.asarray(values, dtype=np.float64)
         
     | 
| 
       468 
482 
     | 
    
         | 
| 
       469 
     | 
    
         
            -
                    self.colors = np.zeros((self.nb,4) 
     | 
| 
       470 
     | 
    
         
            -
                    self.colorsflt = np.zeros((self.nb,4) 
     | 
| 
      
 483 
     | 
    
         
            +
                    self.colors = np.zeros((self.nb, 4), dtype=int)
         
     | 
| 
      
 484 
     | 
    
         
            +
                    self.colorsflt = np.zeros((self.nb, 4), dtype=np.float64)
         
     | 
| 
       471 
485 
     | 
    
         | 
| 
       472 
486 
     | 
    
         
             
                    if isinstance(colors, list):
         
     | 
| 
       473 
487 
     | 
    
         
             
                        if len(colors[0]) == 3:
         
     | 
| 
       474 
488 
     | 
    
         
             
                            for curcol in range(self.nb):
         
     | 
| 
       475 
     | 
    
         
            -
                                self.colors[curcol,0] = colors[curcol][0]
         
     | 
| 
       476 
     | 
    
         
            -
                                self.colors[curcol,1] = colors[curcol][1]
         
     | 
| 
       477 
     | 
    
         
            -
                                self.colors[curcol,2] = colors[curcol][2]
         
     | 
| 
       478 
     | 
    
         
            -
                                self.colors[curcol,3] = 255
         
     | 
| 
      
 489 
     | 
    
         
            +
                                self.colors[curcol, 0] = colors[curcol][0]
         
     | 
| 
      
 490 
     | 
    
         
            +
                                self.colors[curcol, 1] = colors[curcol][1]
         
     | 
| 
      
 491 
     | 
    
         
            +
                                self.colors[curcol, 2] = colors[curcol][2]
         
     | 
| 
      
 492 
     | 
    
         
            +
                                self.colors[curcol, 3] = 255
         
     | 
| 
       479 
493 
     | 
    
         
             
                        elif len(colors[0]) == 4:
         
     | 
| 
       480 
494 
     | 
    
         
             
                            for curcol in range(self.nb):
         
     | 
| 
       481 
     | 
    
         
            -
                                self.colors[curcol,0] = colors[curcol][0]
         
     | 
| 
       482 
     | 
    
         
            -
                                self.colors[curcol,1] = colors[curcol][1]
         
     | 
| 
       483 
     | 
    
         
            -
                                self.colors[curcol,2] = colors[curcol][2]
         
     | 
| 
       484 
     | 
    
         
            -
                                self.colors[curcol,3] = colors[curcol][3]
         
     | 
| 
      
 495 
     | 
    
         
            +
                                self.colors[curcol, 0] = colors[curcol][0]
         
     | 
| 
      
 496 
     | 
    
         
            +
                                self.colors[curcol, 1] = colors[curcol][1]
         
     | 
| 
      
 497 
     | 
    
         
            +
                                self.colors[curcol, 2] = colors[curcol][2]
         
     | 
| 
      
 498 
     | 
    
         
            +
                                self.colors[curcol, 3] = colors[curcol][3]
         
     | 
| 
       485 
499 
     | 
    
         
             
                    elif isinstance(colors, np.ndarray):
         
     | 
| 
       486 
500 
     | 
    
         
             
                        if colors.shape[1] == 3:
         
     | 
| 
       487 
501 
     | 
    
         
             
                            for curcol in range(self.nb):
         
     | 
| 
       488 
     | 
    
         
            -
                                self.colors[curcol,0] = colors[curcol,0]
         
     | 
| 
       489 
     | 
    
         
            -
                                self.colors[curcol,1] = colors[curcol,1]
         
     | 
| 
       490 
     | 
    
         
            -
                                self.colors[curcol,2] = colors[curcol,2]
         
     | 
| 
       491 
     | 
    
         
            -
                                self.colors[curcol,3] = 255
         
     | 
| 
      
 502 
     | 
    
         
            +
                                self.colors[curcol, 0] = colors[curcol, 0]
         
     | 
| 
      
 503 
     | 
    
         
            +
                                self.colors[curcol, 1] = colors[curcol, 1]
         
     | 
| 
      
 504 
     | 
    
         
            +
                                self.colors[curcol, 2] = colors[curcol, 2]
         
     | 
| 
      
 505 
     | 
    
         
            +
                                self.colors[curcol, 3] = 255
         
     | 
| 
       492 
506 
     | 
    
         
             
                        elif colors.shape[1] == 4:
         
     | 
| 
       493 
507 
     | 
    
         
             
                            for curcol in range(self.nb):
         
     | 
| 
       494 
     | 
    
         
            -
                                self.colors[curcol,0] = colors[curcol,0]
         
     | 
| 
       495 
     | 
    
         
            -
                                self.colors[curcol,1] = colors[curcol,1]
         
     | 
| 
       496 
     | 
    
         
            -
                                self.colors[curcol,2] = colors[curcol,2]
         
     | 
| 
       497 
     | 
    
         
            -
                                self.colors[curcol,3] = colors[curcol,3]
         
     | 
| 
       498 
     | 
    
         
            -
             
     | 
| 
      
 508 
     | 
    
         
            +
                                self.colors[curcol, 0] = colors[curcol, 0]
         
     | 
| 
      
 509 
     | 
    
         
            +
                                self.colors[curcol, 1] = colors[curcol, 1]
         
     | 
| 
      
 510 
     | 
    
         
            +
                                self.colors[curcol, 2] = colors[curcol, 2]
         
     | 
| 
      
 511 
     | 
    
         
            +
                                self.colors[curcol, 3] = colors[curcol, 3]
         
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
       499 
513 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       500 
514 
     | 
    
         | 
| 
       501 
515 
     | 
    
         
             
                def defaultgray(self):
         
     | 
| 
       502 
516 
     | 
    
         
             
                    """Palette grise par défaut dans WOLF"""
         
     | 
| 
       503 
     | 
    
         
            -
                    self.nb=2
         
     | 
| 
       504 
     | 
    
         
            -
                    self.values = np.asarray([0.,1.])
         
     | 
| 
       505 
     | 
    
         
            -
                    self.colors = np.asarray([[0,0,0,255],[255,255,255,255]],dtype=np.int32)
         
     | 
| 
      
 517 
     | 
    
         
            +
                    self.nb = 2
         
     | 
| 
      
 518 
     | 
    
         
            +
                    self.values = np.asarray([0., 1.], dtype=np.float64)
         
     | 
| 
      
 519 
     | 
    
         
            +
                    self.colors = np.asarray([[0, 0, 0, 255], [255, 255, 255, 255]], dtype=np.int32)
         
     | 
| 
       506 
520 
     | 
    
         | 
| 
       507 
521 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       508 
522 
     | 
    
         | 
| 
         @@ -512,89 +526,89 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       512 
526 
     | 
    
         
             
                    self.colorsflt = self.colors.astype(float)/255.
         
     | 
| 
       513 
527 
     | 
    
         
             
                    self.colorsuint8 = self.colors.astype(np.uint8)
         
     | 
| 
       514 
528 
     | 
    
         | 
| 
       515 
     | 
    
         
            -
                    dval=self.values[-1]-self.values[0]
         
     | 
| 
      
 529 
     | 
    
         
            +
                    dval = self.values[-1]-self.values[0]
         
     | 
| 
       516 
530 
     | 
    
         | 
| 
       517 
531 
     | 
    
         
             
                    normval = np.ones([len(self.values)])
         
     | 
| 
       518 
532 
     | 
    
         | 
| 
       519 
     | 
    
         
            -
                    if dval>0.:
         
     | 
| 
      
 533 
     | 
    
         
            +
                    if dval > 0.:
         
     | 
| 
       520 
534 
     | 
    
         
             
                        normval = (self.values-self.values[0])/(self.values[-1]-self.values[0])
         
     | 
| 
       521 
535 
     | 
    
         | 
| 
       522 
     | 
    
         
            -
                    normval[0]=0.
         
     | 
| 
       523 
     | 
    
         
            -
                    normval[-1]=1.
         
     | 
| 
       524 
     | 
    
         
            -
                    segmentdata = {"red": np.column_stack([normval, self.colorsflt[:,0], self.colorsflt[:,0]]),
         
     | 
| 
       525 
     | 
    
         
            -
             
     | 
| 
       526 
     | 
    
         
            -
             
     | 
| 
       527 
     | 
    
         
            -
             
     | 
| 
      
 536 
     | 
    
         
            +
                    normval[0] = 0.
         
     | 
| 
      
 537 
     | 
    
         
            +
                    normval[-1] = 1.
         
     | 
| 
      
 538 
     | 
    
         
            +
                    segmentdata = {"red": np.column_stack([normval, self.colorsflt[:, 0], self.colorsflt[:, 0]]),
         
     | 
| 
      
 539 
     | 
    
         
            +
                                   "green": np.column_stack([normval, self.colorsflt[:, 1], self.colorsflt[:, 1]]),
         
     | 
| 
      
 540 
     | 
    
         
            +
                                   "blue": np.column_stack([normval, self.colorsflt[:, 2], self.colorsflt[:, 2]]),
         
     | 
| 
      
 541 
     | 
    
         
            +
                                   "alpha": np.column_stack([normval, self.colorsflt[:, 3], self.colorsflt[:, 3]])}
         
     | 
| 
       528 
542 
     | 
    
         | 
| 
       529 
     | 
    
         
            -
                    LinearSegmentedColormap.__init__(self,'wolf',segmentdata,self.nseg)
         
     | 
| 
      
 543 
     | 
    
         
            +
                    LinearSegmentedColormap.__init__(self, 'wolf', segmentdata, self.nseg)
         
     | 
| 
       530 
544 
     | 
    
         | 
| 
       531 
     | 
    
         
            -
                def readfile(self 
     | 
| 
      
 545 
     | 
    
         
            +
                def readfile(self, *args):
         
     | 
| 
       532 
546 
     | 
    
         
             
                    """Lecture de la palette sur base d'un fichier WOLF .pal"""
         
     | 
| 
       533 
     | 
    
         
            -
                    if len(args)>0:
         
     | 
| 
       534 
     | 
    
         
            -
                        #s'il y a un argument on le prend tel quel
         
     | 
| 
      
 547 
     | 
    
         
            +
                    if len(args) > 0:
         
     | 
| 
      
 548 
     | 
    
         
            +
                        # s'il y a un argument on le prend tel quel
         
     | 
| 
       535 
549 
     | 
    
         
             
                        self.filename = str(args[0])
         
     | 
| 
       536 
550 
     | 
    
         
             
                    else:
         
     | 
| 
       537 
551 
     | 
    
         
             
                        if self.wx_exists:
         
     | 
| 
       538 
     | 
    
         
            -
                            #ouverture d'une boîte de dialogue
         
     | 
| 
       539 
     | 
    
         
            -
                            file=wx.FileDialog(None,"Choose .pal file", wildcard="pal (*.pal)|*.pal|all (*.*)|*.*")
         
     | 
| 
      
 552 
     | 
    
         
            +
                            # ouverture d'une boîte de dialogue
         
     | 
| 
      
 553 
     | 
    
         
            +
                            file = wx.FileDialog(None, "Choose .pal file", wildcard="pal (*.pal)|*.pal|all (*.*)|*.*")
         
     | 
| 
       540 
554 
     | 
    
         
             
                            if file.ShowModal() == wx.ID_CANCEL:
         
     | 
| 
       541 
555 
     | 
    
         
             
                                file.Destroy()
         
     | 
| 
       542 
556 
     | 
    
         
             
                                return
         
     | 
| 
       543 
557 
     | 
    
         
             
                            else:
         
     | 
| 
       544 
     | 
    
         
            -
                                #récuparétaion du nom de fichier avec chemin d'accès
         
     | 
| 
       545 
     | 
    
         
            -
                                self.filename =file.GetPath()
         
     | 
| 
      
 558 
     | 
    
         
            +
                                # récuparétaion du nom de fichier avec chemin d'accès
         
     | 
| 
      
 559 
     | 
    
         
            +
                                self.filename = file.GetPath()
         
     | 
| 
       546 
560 
     | 
    
         
             
                                file.Destroy()
         
     | 
| 
       547 
561 
     | 
    
         
             
                        else:
         
     | 
| 
       548 
562 
     | 
    
         
             
                            return
         
     | 
| 
       549 
563 
     | 
    
         | 
| 
       550 
     | 
    
         
            -
                    #lecture du contenu
         
     | 
| 
      
 564 
     | 
    
         
            +
                    # lecture du contenu
         
     | 
| 
       551 
565 
     | 
    
         
             
                    with open(self.filename, 'r') as myfile:
         
     | 
| 
       552 
     | 
    
         
            -
                        #split des lignes --> récupération des infos sans '\n' en fin de ligne
         
     | 
| 
      
 566 
     | 
    
         
            +
                        # split des lignes --> récupération des infos sans '\n' en fin de ligne
         
     | 
| 
       553 
567 
     | 
    
         
             
                        #  différent de .readlines() qui lui ne supprime pas les '\n'
         
     | 
| 
       554 
568 
     | 
    
         
             
                        mypallines = myfile.read().splitlines()
         
     | 
| 
       555 
569 
     | 
    
         
             
                        myfile.close()
         
     | 
| 
       556 
570 
     | 
    
         | 
| 
       557 
571 
     | 
    
         
             
                        self.nb = int(mypallines[0])
         
     | 
| 
       558 
     | 
    
         
            -
                        self.values = np.zeros(self.nb 
     | 
| 
       559 
     | 
    
         
            -
                        self.colors = np.zeros((self.nb,4) 
     | 
| 
      
 572 
     | 
    
         
            +
                        self.values = np.zeros(self.nb, dtype=np.float64)
         
     | 
| 
      
 573 
     | 
    
         
            +
                        self.colors = np.zeros((self.nb, 4), dtype=int)
         
     | 
| 
       560 
574 
     | 
    
         | 
| 
       561 
575 
     | 
    
         
             
                        for i in range(self.nb):
         
     | 
| 
       562 
576 
     | 
    
         
             
                            self.values[i] = mypallines[i*4+1]
         
     | 
| 
       563 
     | 
    
         
            -
                            self.colors[i,0] = mypallines[i*4+2]
         
     | 
| 
       564 
     | 
    
         
            -
                            self.colors[i,1] = mypallines[i*4+3]
         
     | 
| 
       565 
     | 
    
         
            -
                            self.colors[i,2] = mypallines[i*4+4]
         
     | 
| 
       566 
     | 
    
         
            -
                            self.colors[i,3] = 255
         
     | 
| 
      
 577 
     | 
    
         
            +
                            self.colors[i, 0] = mypallines[i*4+2]
         
     | 
| 
      
 578 
     | 
    
         
            +
                            self.colors[i, 1] = mypallines[i*4+3]
         
     | 
| 
      
 579 
     | 
    
         
            +
                            self.colors[i, 2] = mypallines[i*4+4]
         
     | 
| 
      
 580 
     | 
    
         
            +
                            self.colors[i, 3] = 255
         
     | 
| 
       567 
581 
     | 
    
         | 
| 
       568 
582 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       569 
583 
     | 
    
         | 
| 
       570 
     | 
    
         
            -
                def savefile(self 
     | 
| 
      
 584 
     | 
    
         
            +
                def savefile(self, *args):
         
     | 
| 
       571 
585 
     | 
    
         
             
                    """Lecture de la palette sur base d'un fichier WOLF .pal"""
         
     | 
| 
       572 
     | 
    
         
            -
                    if len(args)>0:
         
     | 
| 
       573 
     | 
    
         
            -
                        #s'il y a un argument on le prend tel quel
         
     | 
| 
      
 586 
     | 
    
         
            +
                    if len(args) > 0:
         
     | 
| 
      
 587 
     | 
    
         
            +
                        # s'il y a un argument on le prend tel quel
         
     | 
| 
       574 
588 
     | 
    
         
             
                        fn = str(args[0])
         
     | 
| 
       575 
589 
     | 
    
         
             
                    else:
         
     | 
| 
       576 
     | 
    
         
            -
                        #ouverture d'une boîte de dialogue
         
     | 
| 
       577 
     | 
    
         
            -
                        file=wx.FileDialog(None,"Choose .pal file", wildcard="pal (*.pal)|*.pal|all (*.*)|*.*",style=wx.FD_SAVE)
         
     | 
| 
      
 590 
     | 
    
         
            +
                        # ouverture d'une boîte de dialogue
         
     | 
| 
      
 591 
     | 
    
         
            +
                        file = wx.FileDialog(None, "Choose .pal file", wildcard="pal (*.pal)|*.pal|all (*.*)|*.*", style=wx.FD_SAVE)
         
     | 
| 
       578 
592 
     | 
    
         
             
                        if file.ShowModal() == wx.ID_CANCEL:
         
     | 
| 
       579 
593 
     | 
    
         
             
                            return
         
     | 
| 
       580 
594 
     | 
    
         
             
                        else:
         
     | 
| 
       581 
     | 
    
         
            -
                            #récuparétaion du nom de fichier avec chemin d'accès
         
     | 
| 
       582 
     | 
    
         
            -
                            fn =file.GetPath()
         
     | 
| 
      
 595 
     | 
    
         
            +
                            # récuparétaion du nom de fichier avec chemin d'accès
         
     | 
| 
      
 596 
     | 
    
         
            +
                            fn = file.GetPath()
         
     | 
| 
       583 
597 
     | 
    
         | 
| 
       584 
     | 
    
         
            -
                    self.filename=fn
         
     | 
| 
      
 598 
     | 
    
         
            +
                    self.filename = fn
         
     | 
| 
       585 
599 
     | 
    
         | 
| 
       586 
     | 
    
         
            -
                    #lecture du contenu
         
     | 
| 
      
 600 
     | 
    
         
            +
                    # lecture du contenu
         
     | 
| 
       587 
601 
     | 
    
         
             
                    with open(self.filename, 'w') as myfile:
         
     | 
| 
       588 
     | 
    
         
            -
                        #split des lignes --> récupération des infos sans '\n' en fin de ligne
         
     | 
| 
      
 602 
     | 
    
         
            +
                        # split des lignes --> récupération des infos sans '\n' en fin de ligne
         
     | 
| 
       589 
603 
     | 
    
         
             
                        #  différent de .readlines() qui lui ne supprime pas les '\n'
         
     | 
| 
       590 
604 
     | 
    
         
             
                        myfile.write(str(self.nb)+'\n')
         
     | 
| 
       591 
605 
     | 
    
         
             
                        for i in range(self.nb):
         
     | 
| 
       592 
606 
     | 
    
         
             
                            myfile.write(str(self.values[i])+'\n')
         
     | 
| 
       593 
     | 
    
         
            -
                            myfile.write(str(self.colors[i,0])+'\n')
         
     | 
| 
       594 
     | 
    
         
            -
                            myfile.write(str(self.colors[i,1])+'\n')
         
     | 
| 
       595 
     | 
    
         
            -
                            myfile.write(str(self.colors[i,2])+'\n')
         
     | 
| 
      
 607 
     | 
    
         
            +
                            myfile.write(str(self.colors[i, 0])+'\n')
         
     | 
| 
      
 608 
     | 
    
         
            +
                            myfile.write(str(self.colors[i, 1])+'\n')
         
     | 
| 
      
 609 
     | 
    
         
            +
                            myfile.write(str(self.colors[i, 2])+'\n')
         
     | 
| 
       596 
610 
     | 
    
         | 
| 
       597 
     | 
    
         
            -
                def isopop(self, array: ma.masked_array, nbnotnull:int=99999):
         
     | 
| 
      
 611 
     | 
    
         
            +
                def isopop(self, array: ma.masked_array, nbnotnull: int = 99999):
         
     | 
| 
       598 
612 
     | 
    
         
             
                    """Remplissage des valeurs de palette sur base d'une équirépartition de valeurs"""
         
     | 
| 
       599 
613 
     | 
    
         | 
| 
       600 
614 
     | 
    
         
             
                    sortarray = array.flatten(order='F')
         
     | 
| 
         @@ -607,7 +621,7 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       607 
621 
     | 
    
         | 
| 
       608 
622 
     | 
    
         
             
                    sortarray.sort(axis=-1)
         
     | 
| 
       609 
623 
     | 
    
         | 
| 
       610 
     | 
    
         
            -
                    #valeurs min et max
         
     | 
| 
      
 624 
     | 
    
         
            +
                    # valeurs min et max
         
     | 
| 
       611 
625 
     | 
    
         
             
                    if nbnotnull == 0:
         
     | 
| 
       612 
626 
     | 
    
         
             
                        self.values[0] = 0
         
     | 
| 
       613 
627 
     | 
    
         
             
                        self.values[1:] = 1
         
     | 
| 
         @@ -617,7 +631,7 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       617 
631 
     | 
    
         | 
| 
       618 
632 
     | 
    
         
             
                        self.values[0] = sortarray[0]
         
     | 
| 
       619 
633 
     | 
    
         | 
| 
       620 
     | 
    
         
            -
                        if(nbnotnull==99999):
         
     | 
| 
      
 634 
     | 
    
         
            +
                        if (nbnotnull == 99999):
         
     | 
| 
       621 
635 
     | 
    
         
             
                            self.values[-1] = sortarray[-1]
         
     | 
| 
       622 
636 
     | 
    
         
             
                            nb = sortarray.count()
         
     | 
| 
       623 
637 
     | 
    
         
             
                        else:
         
     | 
| 
         @@ -625,41 +639,41 @@ class wolfpalette(wx.Frame,LinearSegmentedColormap): 
     | 
|
| 
       625 
639 
     | 
    
         
             
                            nb = nbnotnull
         
     | 
| 
       626 
640 
     | 
    
         | 
| 
       627 
641 
     | 
    
         
             
                        interv = int(nb / (self.nb-1))
         
     | 
| 
       628 
     | 
    
         
            -
                        if interv==0:
         
     | 
| 
      
 642 
     | 
    
         
            +
                        if interv == 0:
         
     | 
| 
       629 
643 
     | 
    
         
             
                            self.values[:] = self.values[-1]
         
     | 
| 
       630 
644 
     | 
    
         
             
                            self.values[0] = self.values[-1]-1.
         
     | 
| 
       631 
645 
     | 
    
         
             
                        else:
         
     | 
| 
       632 
     | 
    
         
            -
                            for cur in range(1,self.nb-1):
         
     | 
| 
      
 646 
     | 
    
         
            +
                            for cur in range(1, self.nb-1):
         
     | 
| 
       633 
647 
     | 
    
         
             
                                self.values[cur] = sortarray[cur * interv]
         
     | 
| 
       634 
648 
     | 
    
         | 
| 
       635 
649 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       636 
650 
     | 
    
         | 
| 
       637 
     | 
    
         
            -
                def defaultgray_minmax(self,array: ma.masked_array,nbnotnull=99999):
         
     | 
| 
      
 651 
     | 
    
         
            +
                def defaultgray_minmax(self, array: ma.masked_array, nbnotnull=99999):
         
     | 
| 
       638 
652 
     | 
    
         
             
                    """Remplissage des valeurs de palette sur base d'une équirépartition de valeurs"""
         
     | 
| 
       639 
653 
     | 
    
         | 
| 
       640 
     | 
    
         
            -
                    self.nb=2
         
     | 
| 
       641 
     | 
    
         
            -
                    self.values = np.asarray([np.min(array),np.max(array)])
         
     | 
| 
       642 
     | 
    
         
            -
                    self.colors = np.asarray([[0,0,0,255],[255,255,255,255]],dtype=np.int32)
         
     | 
| 
       643 
     | 
    
         
            -
                    self.colorsflt = np.asarray([[0.,0.,0.,1.],[1.,1.,1.,1.]],dtype=np.float64)
         
     | 
| 
      
 654 
     | 
    
         
            +
                    self.nb = 2
         
     | 
| 
      
 655 
     | 
    
         
            +
                    self.values = np.asarray([np.min(array), np.max(array)], dtype=np.float64)
         
     | 
| 
      
 656 
     | 
    
         
            +
                    self.colors = np.asarray([[0, 0, 0, 255], [255, 255, 255, 255]], dtype=np.int32)
         
     | 
| 
      
 657 
     | 
    
         
            +
                    self.colorsflt = np.asarray([[0., 0., 0., 1.], [1., 1., 1., 1.]], dtype=np.float64)
         
     | 
| 
       644 
658 
     | 
    
         | 
| 
       645 
659 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       646 
660 
     | 
    
         | 
| 
       647 
     | 
    
         
            -
                def defaultblue_minmax(self,array: ma.masked_array,nbnotnull=99999):
         
     | 
| 
      
 661 
     | 
    
         
            +
                def defaultblue_minmax(self, array: ma.masked_array, nbnotnull=99999):
         
     | 
| 
       648 
662 
     | 
    
         
             
                    """Remplissage des valeurs de palette sur base d'une équirépartition de valeurs"""
         
     | 
| 
       649 
663 
     | 
    
         | 
| 
       650 
     | 
    
         
            -
                    self.nb=2
         
     | 
| 
       651 
     | 
    
         
            -
                    self.values = np.asarray([np.min(array),np.max(array)])
         
     | 
| 
       652 
     | 
    
         
            -
                    self.colors = np.asarray([[255,255,255,255],[0,0,255,255]],dtype=np.int32)
         
     | 
| 
       653 
     | 
    
         
            -
                    self.colorsflt = np.asarray([[0.,0.,0.,1.],[1.,1.,1.,1.]],dtype=np.float64)
         
     | 
| 
      
 664 
     | 
    
         
            +
                    self.nb = 2
         
     | 
| 
      
 665 
     | 
    
         
            +
                    self.values = np.asarray([np.min(array), np.max(array)], dtype=np.float64)
         
     | 
| 
      
 666 
     | 
    
         
            +
                    self.colors = np.asarray([[255, 255, 255, 255], [0, 0, 255, 255]], dtype=np.int32)
         
     | 
| 
      
 667 
     | 
    
         
            +
                    self.colorsflt = np.asarray([[0., 0., 0., 1.], [1., 1., 1., 1.]], dtype=np.float64)
         
     | 
| 
       654 
668 
     | 
    
         | 
| 
       655 
669 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
| 
       656 
670 
     | 
    
         | 
| 
       657 
671 
     | 
    
         
             
                def defaultblue(self):
         
     | 
| 
       658 
672 
     | 
    
         
             
                    """Remplissage des valeurs de palette sur base d'une équirépartition de valeurs"""
         
     | 
| 
       659 
673 
     | 
    
         | 
| 
       660 
     | 
    
         
            -
                    self.nb=2
         
     | 
| 
       661 
     | 
    
         
            -
                    self.values = np.asarray([0.,1.])
         
     | 
| 
       662 
     | 
    
         
            -
                    self.colors = np.asarray([[255,255,255,255],[0,0,255,255]],dtype=np.int32)
         
     | 
| 
       663 
     | 
    
         
            -
                    self.colorsflt = np.asarray([[0.,0.,0.,1.],[1.,1.,1.,1.]],dtype=np.float64)
         
     | 
| 
      
 674 
     | 
    
         
            +
                    self.nb = 2
         
     | 
| 
      
 675 
     | 
    
         
            +
                    self.values = np.asarray([0., 1.], dtype=np.float64)
         
     | 
| 
      
 676 
     | 
    
         
            +
                    self.colors = np.asarray([[255, 255, 255, 255], [0, 0, 255, 255]], dtype=np.int32)
         
     | 
| 
      
 677 
     | 
    
         
            +
                    self.colorsflt = np.asarray([[0., 0., 0., 1.], [1., 1., 1., 1.]], dtype=np.float64)
         
     | 
| 
       664 
678 
     | 
    
         | 
| 
       665 
679 
     | 
    
         
             
                    self.fill_segmentdata()
         
     | 
    
        wolfhece/apps/splashscreen.py
    CHANGED
    
    | 
         @@ -19,7 +19,7 @@ from   wx.adv import SplashScreen as SplashScreen,SPLASH_CENTRE_ON_SCREEN,SPLASH 
     | 
|
| 
       19 
19 
     | 
    
         | 
| 
       20 
20 
     | 
    
         
             
            try:
         
     | 
| 
       21 
21 
     | 
    
         
             
                from ..libs import wolfogl
         
     | 
| 
       22 
     | 
    
         
            -
            except:
         
     | 
| 
      
 22 
     | 
    
         
            +
            except ImportError:
         
     | 
| 
       23 
23 
     | 
    
         
             
                print("** WolfOGL not found **")
         
     | 
| 
       24 
24 
     | 
    
         
             
                print("Without WolfOGL, the application will not work !")
         
     | 
| 
       25 
25 
     | 
    
         
             
                print("Please reinstall 'wolfhece' package -- pip install wolfhece --force-reinstall")
         
     | 
| 
         @@ -38,7 +38,7 @@ class WolfLauncher(SplashScreen): 
     | 
|
| 
       38 
38 
     | 
    
         | 
| 
       39 
39 
     | 
    
         
             
                    # try:
         
     | 
| 
       40 
40 
     | 
    
         
             
                    #     wolfogl.init()
         
     | 
| 
       41 
     | 
    
         
            -
                    # except  
     | 
| 
      
 41 
     | 
    
         
            +
                    # except ImportError:
         
     | 
| 
       42 
42 
     | 
    
         
             
                    #     print("Error initializing WolfOGL -- We must stop here !")
         
     | 
| 
       43 
43 
     | 
    
         
             
                    #     print("Please reinstall 'wolfhece' package -- pip install wolfhece")
         
     | 
| 
       44 
44 
     | 
    
         
             
                    #     exit()
         
     | 
    
        wolfhece/apps/version.py
    CHANGED
    
    
| 
         Binary file 
     | 
    
        wolfhece/pyviews.py
    CHANGED
    
    | 
         @@ -181,17 +181,21 @@ class WolfViews(Element_To_Draw): 
     | 
|
| 
       181 
181 
     | 
    
         | 
| 
       182 
182 
     | 
    
         
             
                    if self.plotted:
         
     | 
| 
       183 
183 
     | 
    
         | 
| 
       184 
     | 
    
         
            -
                        for cur,pal in zip(self.view,self.pals):
         
     | 
| 
      
 184 
     | 
    
         
            +
                        for cur, pal in zip(self.view, self.pals):
         
     | 
| 
       185 
185 
     | 
    
         
             
                            oldplotted = cur.plotted
         
     | 
| 
       186 
186 
     | 
    
         
             
                            cur.plotted=True
         
     | 
| 
       187 
187 
     | 
    
         | 
| 
       188 
188 
     | 
    
         
             
                            if isinstance(cur,WolfArray):
         
     | 
| 
       189 
     | 
    
         
            -
                                if  
     | 
| 
       190 
     | 
    
         
            -
                                    if  
     | 
| 
       191 
     | 
    
         
            -
                                        if  
     | 
| 
       192 
     | 
    
         
            -
             
     | 
| 
      
 189 
     | 
    
         
            +
                                if VERSION_RGB ==1:
         
     | 
| 
      
 190 
     | 
    
         
            +
                                    if cur.rgb is None:
         
     | 
| 
      
 191 
     | 
    
         
            +
                                        if pal is not None:
         
     | 
| 
      
 192 
     | 
    
         
            +
                                            cur.rgb = pal.get_rgba(cur.array)
         
     | 
| 
      
 193 
     | 
    
         
            +
                                        else:
         
     | 
| 
      
 194 
     | 
    
         
            +
                                            cur.mypal.defaultgray_minmax(cur.array)
         
     | 
| 
      
 195 
     | 
    
         
            +
                                            cur.rgb = cur.mypal.get_rgba(cur.array)
         
     | 
| 
      
 196 
     | 
    
         
            +
                                elif VERSION_RGB == 2:
         
     | 
| 
      
 197 
     | 
    
         
            +
                                    if pal is None:
         
     | 
| 
       193 
198 
     | 
    
         
             
                                        cur.mypal.defaultgray_minmax(cur.array)
         
     | 
| 
       194 
     | 
    
         
            -
                                        if VERSION_RGB ==1: cur.rgb = cur.mypal.get_rgba(cur.array)
         
     | 
| 
       195 
199 
     | 
    
         | 
| 
       196 
200 
     | 
    
         
             
                            cur.plot(sx,sy,xmin,ymin,xmax,ymax)
         
     | 
| 
       197 
201 
     | 
    
         
             
                            cur.plotted = oldplotted
         
     | 
    
        wolfhece/wolf_array.py
    CHANGED
    
    | 
         @@ -53,7 +53,7 @@ from .drawing_obj import Element_To_Draw 
     | 
|
| 
       53 
53 
     | 
    
         | 
| 
       54 
54 
     | 
    
         
             
            try:
         
     | 
| 
       55 
55 
     | 
    
         
             
                from .libs import wolfogl
         
     | 
| 
       56 
     | 
    
         
            -
            except:
         
     | 
| 
      
 56 
     | 
    
         
            +
            except ImportError:
         
     | 
| 
       57 
57 
     | 
    
         
             
                msg=_('Error importing wolfogl.pyd')
         
     | 
| 
       58 
58 
     | 
    
         
             
                msg+=_('   Python version : ' + sys.version)
         
     | 
| 
       59 
59 
     | 
    
         
             
                msg+=_('   If your Python version is not 3.10.x, you need to get an adapted library in wolfhece library path libs')
         
     | 
| 
         @@ -4163,7 +4163,7 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       4163 
4163 
     | 
    
         
             
                             create:bool        = False,
         
     | 
| 
       4164 
4164 
     | 
    
         
             
                             mapviewer          = None,
         
     | 
| 
       4165 
4165 
     | 
    
         
             
                             nullvalue:float    = 0.,
         
     | 
| 
       4166 
     | 
    
         
            -
                             srcheader:header_wolf 
     | 
| 
      
 4166 
     | 
    
         
            +
                             srcheader:header_wolf = None,
         
     | 
| 
       4167 
4167 
     | 
    
         
             
                             idx:str            = '',
         
     | 
| 
       4168 
4168 
     | 
    
         
             
                             plotted:bool       = False,
         
     | 
| 
       4169 
4169 
     | 
    
         
             
                             need_for_wx:bool   = False,
         
     | 
| 
         @@ -4173,7 +4173,7 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       4173 
4173 
     | 
    
         
             
                    Constructor of the WolfArray class
         
     | 
| 
       4174 
4174 
     | 
    
         | 
| 
       4175 
4175 
     | 
    
         
             
                    :param fname: filename/filepath - if provided, the file will be read on disk
         
     | 
| 
       4176 
     | 
    
         
            -
                    :param mold: initialize from a copy a the mold object --> must be a WolArray
         
     | 
| 
      
 4176 
     | 
    
         
            +
                    :param mold: initialize from a copy a the mold object --> must be a WolArray if not None
         
     | 
| 
       4177 
4177 
     | 
    
         
             
                    :param masknull: mask data based on the nullvalue
         
     | 
| 
       4178 
4178 
     | 
    
         
             
                    :param crop: crop data based on the spatial extent [[xmin, xmax],[ymin,ymax]]
         
     | 
| 
       4179 
4179 
     | 
    
         
             
                    :param whichtype: type of the numpy array (float32 as default)
         
     | 
| 
         @@ -4188,7 +4188,11 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       4188 
4188 
     | 
    
         
             
                    :param mask_source: mask to link to the data
         
     | 
| 
       4189 
4189 
     | 
    
         | 
| 
       4190 
4190 
     | 
    
         
             
                    """
         
     | 
| 
       4191 
     | 
    
         
            -
                     
     | 
| 
      
 4191 
     | 
    
         
            +
                    try:
         
     | 
| 
      
 4192 
     | 
    
         
            +
                        pass
         
     | 
| 
      
 4193 
     | 
    
         
            +
                        # wolfogl.powermode('ON')
         
     | 
| 
      
 4194 
     | 
    
         
            +
                    except PermissionError:
         
     | 
| 
      
 4195 
     | 
    
         
            +
                        print(_('wolfogl not available -- Pleas check your wolfhece installation'))
         
     | 
| 
       4192 
4196 
     | 
    
         | 
| 
       4193 
4197 
     | 
    
         
             
                    Element_To_Draw.__init__(self, idx, plotted, mapviewer, need_for_wx)
         
     | 
| 
       4194 
4198 
     | 
    
         
             
                    header_wolf.__init__(self)
         
     | 
| 
         @@ -6182,6 +6186,9 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       6182 
6186 
     | 
    
         
             
                    else:
         
     | 
| 
       6183 
6187 
     | 
    
         
             
                        newArray.array = np.ma.masked_array(self.array + other.array, self.array.mask)
         
     | 
| 
       6184 
6188 
     | 
    
         
             
                    newArray.count()
         
     | 
| 
      
 6189 
     | 
    
         
            +
             
     | 
| 
      
 6190 
     | 
    
         
            +
                    assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
         
     | 
| 
      
 6191 
     | 
    
         
            +
             
     | 
| 
       6185 
6192 
     | 
    
         
             
                    return newArray
         
     | 
| 
       6186 
6193 
     | 
    
         | 
| 
       6187 
6194 
     | 
    
         
             
                def __mul__(self, other):
         
     | 
| 
         @@ -6208,6 +6215,9 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       6208 
6215 
     | 
    
         
             
                    else:
         
     | 
| 
       6209 
6216 
     | 
    
         
             
                        newArray.array = np.ma.masked_array(self.array * other.array, self.array.mask)
         
     | 
| 
       6210 
6217 
     | 
    
         
             
                    newArray.count()
         
     | 
| 
      
 6218 
     | 
    
         
            +
             
     | 
| 
      
 6219 
     | 
    
         
            +
                    assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
         
     | 
| 
      
 6220 
     | 
    
         
            +
             
     | 
| 
       6211 
6221 
     | 
    
         
             
                    return newArray
         
     | 
| 
       6212 
6222 
     | 
    
         | 
| 
       6213 
6223 
     | 
    
         
             
                def __sub__(self, other):
         
     | 
| 
         @@ -6234,6 +6244,9 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       6234 
6244 
     | 
    
         
             
                    else:
         
     | 
| 
       6235 
6245 
     | 
    
         
             
                        newArray.array = np.ma.masked_array(self.array - other.array, self.array.mask)
         
     | 
| 
       6236 
6246 
     | 
    
         
             
                    newArray.count()
         
     | 
| 
      
 6247 
     | 
    
         
            +
             
     | 
| 
      
 6248 
     | 
    
         
            +
                    assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
         
     | 
| 
      
 6249 
     | 
    
         
            +
             
     | 
| 
       6237 
6250 
     | 
    
         
             
                    return newArray
         
     | 
| 
       6238 
6251 
     | 
    
         | 
| 
       6239 
6252 
     | 
    
         
             
                def __pow__(self, other):
         
     | 
| 
         @@ -6256,6 +6269,9 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       6256 
6269 
     | 
    
         | 
| 
       6257 
6270 
     | 
    
         
             
                    newArray.array = np.ma.masked_array(self.array ** other, self.array.mask)
         
     | 
| 
       6258 
6271 
     | 
    
         
             
                    newArray.count()
         
     | 
| 
      
 6272 
     | 
    
         
            +
             
     | 
| 
      
 6273 
     | 
    
         
            +
                    assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
         
     | 
| 
      
 6274 
     | 
    
         
            +
             
     | 
| 
       6259 
6275 
     | 
    
         
             
                    return newArray
         
     | 
| 
       6260 
6276 
     | 
    
         | 
| 
       6261 
6277 
     | 
    
         
             
                def __truediv__(self, other):
         
     | 
| 
         @@ -6282,6 +6298,9 @@ class WolfArray(Element_To_Draw, header_wolf): 
     | 
|
| 
       6282 
6298 
     | 
    
         
             
                    else:
         
     | 
| 
       6283 
6299 
     | 
    
         
             
                        newArray.array = np.ma.masked_array(np.where(other == 0., 0., self.array / other.array), self.array.mask)
         
     | 
| 
       6284 
6300 
     | 
    
         
             
                    newArray.count()
         
     | 
| 
      
 6301 
     | 
    
         
            +
             
     | 
| 
      
 6302 
     | 
    
         
            +
                    assert newArray.array.dtype == self.array.dtype, _('Bad dtype')
         
     | 
| 
      
 6303 
     | 
    
         
            +
             
     | 
| 
       6285 
6304 
     | 
    
         
             
                    return newArray
         
     | 
| 
       6286 
6305 
     | 
    
         | 
| 
       6287 
6306 
     | 
    
         
             
                def concatenate(self, list_arr:list["WolfArray"], nullvalue:float = 0.):
         
     | 
    
        wolfhece/wolfresults_2D.py
    CHANGED
    
    | 
         @@ -1787,14 +1787,20 @@ class OneWolfResult: 
     | 
|
| 
       1787 
1787 
     | 
    
         
             
                        self._current.rgb = curpal.get_rgba(self._current.array)
         
     | 
| 
       1788 
1788 
     | 
    
         
             
                        self._current.rgb[self._current.array.mask] = [1., 1., 1., 1.]
         
     | 
| 
       1789 
1789 
     | 
    
         | 
| 
       1790 
     | 
    
         
            -
                    if which  
     | 
| 
       1791 
     | 
    
         
            -
                        self._view.pals = [ 
     | 
| 
       1792 
     | 
    
         
            -
                    elif which  
     | 
| 
       1793 
     | 
    
         
            -
                        self._view.pals = [ 
     | 
| 
       1794 
     | 
    
         
            -
             
     | 
| 
       1795 
     | 
    
         
            -
             
     | 
| 
       1796 
     | 
    
         
            -
             
     | 
| 
       1797 
     | 
    
         
            -
             
     | 
| 
      
 1790 
     | 
    
         
            +
                    if which in [views_2D.WD_Q, views_2D.WD_U]:
         
     | 
| 
      
 1791 
     | 
    
         
            +
                        self._view.pals = [curpal, None]
         
     | 
| 
      
 1792 
     | 
    
         
            +
                    elif which in [views_2D.WL_U, views_2D.WL_Q]:
         
     | 
| 
      
 1793 
     | 
    
         
            +
                        self._view.pals = [curpal, None]
         
     | 
| 
      
 1794 
     | 
    
         
            +
             
     | 
| 
      
 1795 
     | 
    
         
            +
                    elif which == views_2D.T_WL_Q:
         
     | 
| 
      
 1796 
     | 
    
         
            +
                        self._view.pals = [graypal, curpal, None]
         
     | 
| 
      
 1797 
     | 
    
         
            +
                    elif which == views_2D.T_WL_Q:
         
     | 
| 
      
 1798 
     | 
    
         
            +
                        self._view.pals = [graypal, curpal, None]
         
     | 
| 
      
 1799 
     | 
    
         
            +
             
     | 
| 
      
 1800 
     | 
    
         
            +
                    elif which == views_2D.T_WD_Q:
         
     | 
| 
      
 1801 
     | 
    
         
            +
                        self._view.pals = [graypal, bluepal, None]
         
     | 
| 
      
 1802 
     | 
    
         
            +
                    elif which == views_2D.T_WD_U:
         
     | 
| 
      
 1803 
     | 
    
         
            +
                        self._view.pals = [graypal, bluepal, None]
         
     | 
| 
       1798 
1804 
     | 
    
         | 
| 
       1799 
1805 
     | 
    
         
             
                def get_critdiam(self, which:int) -> WolfArray:
         
     | 
| 
       1800 
1806 
     | 
    
         
             
                    """
         
     | 
| 
         @@ -10,7 +10,7 @@ wolfhece/PyDraw.py,sha256=MQO149Cp8QtxWceXpKWLsDbE6JBrVbqEWoAOXWfHl2w,390751 
     | 
|
| 
       10 
10 
     | 
    
         
             
            wolfhece/PyGui.py,sha256=_1LKelusQ-FS0AtgpwFiXKMZ2glky7K1WINTI93H0k0,103438
         
     | 
| 
       11 
11 
     | 
    
         
             
            wolfhece/PyGuiHydrology.py,sha256=f60E8K9eGTnRq5RDF6yvt-ahf2AYegwQ9t25zZ2Mk1A,14946
         
     | 
| 
       12 
12 
     | 
    
         
             
            wolfhece/PyHydrographs.py,sha256=jwtSNMMACwarxrtN1UeQYth99UNrhwPx1IGgUwcooHA,3774
         
     | 
| 
       13 
     | 
    
         
            -
            wolfhece/PyPalette.py,sha256= 
     | 
| 
      
 13 
     | 
    
         
            +
            wolfhece/PyPalette.py,sha256=uxibQSz5u1q8bgZv-VId6o_SI5TTfLHPs9DpJomVwSA,27179
         
     | 
| 
       14 
14 
     | 
    
         
             
            wolfhece/PyParams.py,sha256=wwgmP-_7wiiPLTcyX8a5jR6FyC1D2c4oBPc1VWQqtSA,97383
         
     | 
| 
       15 
15 
     | 
    
         
             
            wolfhece/PyPictures.py,sha256=m1kY0saW6Y9Q0bDCo47lW6XxDkBrbQG-Fd8uVn8G5ic,2514
         
     | 
| 
       16 
16 
     | 
    
         
             
            wolfhece/PyTranslate.py,sha256=4appkmNeHHZLFmUtaA_k5_5QL-5ymxnbVN4R2OblmtE,622
         
     | 
| 
         @@ -42,18 +42,18 @@ wolfhece/pydike.py,sha256=hPBQsmSTW4QAp1wcOzb-TL3L7eet2WT1sJx2q-WNQ-Q,2241 
     | 
|
| 
       42 
42 
     | 
    
         
             
            wolfhece/pylogging.py,sha256=4TI8hgBB65z-zpvU5Rfa2jkPXPhJaqXjHVPwbcdzTNc,4528
         
     | 
| 
       43 
43 
     | 
    
         
             
            wolfhece/pypolygons_scen.py,sha256=x-tnYLNq3MPV51NbaU14trgRj8qyUyOrMdF1zDsUX3I,37444
         
     | 
| 
       44 
44 
     | 
    
         
             
            wolfhece/pyshields.py,sha256=7k-qe2EJgr9fJE62jyPmlWQwRj8T0DK4iuMU844ZhYs,23281
         
     | 
| 
       45 
     | 
    
         
            -
            wolfhece/pyviews.py,sha256= 
     | 
| 
      
 45 
     | 
    
         
            +
            wolfhece/pyviews.py,sha256=jSTXCsmzw5OIZusj3Ynfd2o2XvRq7TaDnbt-dyNlbi0,10198
         
     | 
| 
       46 
46 
     | 
    
         
             
            wolfhece/pywalous.py,sha256=yRaWJjKckXef1d9D5devP0yFHC9uc6kRV4G5x9PNq9k,18972
         
     | 
| 
       47 
47 
     | 
    
         
             
            wolfhece/rain_SPWMI.py,sha256=qCfcmF7LajloOaCwnTrrSMzyME03YyilmRUOqrPrv3U,13846
         
     | 
| 
       48 
48 
     | 
    
         
             
            wolfhece/textpillow.py,sha256=map7HsGYML_o5NHRdFg2s_TVQed_lDnpYNDv27MM0Vw,14130
         
     | 
| 
       49 
49 
     | 
    
         
             
            wolfhece/tools_mpl.py,sha256=gQ3Jg1iuZiecmMqa5Eli2ZLSkttu68VXL8YmMDBaEYU,564
         
     | 
| 
       50 
     | 
    
         
            -
            wolfhece/wolf_array.py,sha256= 
     | 
| 
      
 50 
     | 
    
         
            +
            wolfhece/wolf_array.py,sha256=7-5l96kuQdTE3CStLyf8PkyRD3QX1Us7DOTbF7INepY,356721
         
     | 
| 
       51 
51 
     | 
    
         
             
            wolfhece/wolf_hist.py,sha256=7jeVrgSkM3ErJO6SRMH_PGzfLjIdw8vTy87kesldggk,3582
         
     | 
| 
       52 
52 
     | 
    
         
             
            wolfhece/wolf_texture.py,sha256=EqZI6qCR6ouT3wEtnG_NkVLdvUhfY65JVTj5b6o4lXI,16576
         
     | 
| 
       53 
53 
     | 
    
         
             
            wolfhece/wolf_tiles.py,sha256=2Ho2I20rHRY81KXxjgLOYISdF4OkJ2d6omeY4shDoGI,10386
         
     | 
| 
       54 
54 
     | 
    
         
             
            wolfhece/wolf_vrt.py,sha256=89XoDhCJMHiwPQUuOduxtTRKuIa8RDxgNqX65S4xp9M,10569
         
     | 
| 
       55 
55 
     | 
    
         
             
            wolfhece/wolf_zi_db.py,sha256=baE0niMCzybWGSvPJc5FNxo9ZxsGfU4p-FmfiavFHAs,12967
         
     | 
| 
       56 
     | 
    
         
            -
            wolfhece/wolfresults_2D.py,sha256= 
     | 
| 
      
 56 
     | 
    
         
            +
            wolfhece/wolfresults_2D.py,sha256=MlvE2OoSwk1P_CeTwotV1QDBJYeHhSCjUprG3c42tRc,165714
         
     | 
| 
       57 
57 
     | 
    
         
             
            wolfhece/xyz_file.py,sha256=Se4nCPwYAYLSA5i0zsbnZUKoAMAD0mK1FJea5WSZUkk,5755
         
     | 
| 
       58 
58 
     | 
    
         
             
            wolfhece/acceptability/Parallels.py,sha256=h4tu3SpC_hR5Hqa68aruxhtAyhs8u666YuZ40_fR5zg,3979
         
     | 
| 
       59 
59 
     | 
    
         
             
            wolfhece/acceptability/__init__.py,sha256=hfgoPKLDpX7drN1Vpvux-_5Lfyc_7feT2C2zQr5v-Os,258
         
     | 
| 
         @@ -70,8 +70,8 @@ wolfhece/apps/__init__.py,sha256=OzzKItATWV0mDkz_LC2L3w5sgT2rt8ExXXCbR_FwvlY,24 
     | 
|
| 
       70 
70 
     | 
    
         
             
            wolfhece/apps/check_install.py,sha256=icFpkjfwNGDX-0NZVa-ijrCrqmGHEKDiFphjN8uTyh8,928
         
     | 
| 
       71 
71 
     | 
    
         
             
            wolfhece/apps/curvedigitizer.py,sha256=_hRR2PWow7PU7rTHIbc6ykZ08tCXcK9uy7RFrb4EKkE,5196
         
     | 
| 
       72 
72 
     | 
    
         
             
            wolfhece/apps/isocurrent.py,sha256=MuwTodHxdc6PrqNpphR2ntYf1NLL2n9klTPndGrOHDQ,4109
         
     | 
| 
       73 
     | 
    
         
            -
            wolfhece/apps/splashscreen.py,sha256= 
     | 
| 
       74 
     | 
    
         
            -
            wolfhece/apps/version.py,sha256= 
     | 
| 
      
 73 
     | 
    
         
            +
            wolfhece/apps/splashscreen.py,sha256=SrustmIQeXnsiD-92OzjdGhBi-S7c_j-cSvuX4T6rtg,2929
         
     | 
| 
      
 74 
     | 
    
         
            +
            wolfhece/apps/version.py,sha256=9TV-RYEEy9X0HeZ9xYxf6PRts-on5mB43zJZtbq4_bY,388
         
     | 
| 
       75 
75 
     | 
    
         
             
            wolfhece/apps/wolf.py,sha256=mM6Tyi4DlKQILmO49cDUCip9fYVy-hLXkY3YhZgIeUQ,591
         
     | 
| 
       76 
76 
     | 
    
         
             
            wolfhece/apps/wolf2D.py,sha256=yPQGee7fsegoQ8GfWKrWEjX1Az_ApL-UWlBiqPvaIyY,565
         
     | 
| 
       77 
77 
     | 
    
         
             
            wolfhece/apps/wolf_logo.bmp,sha256=ruJ4MA51CpGO_AYUp_dB4SWKHelvhOvd7Q8NrVOjDJk,3126
         
     | 
| 
         @@ -171,7 +171,7 @@ wolfhece/lazviewer/viewer/viewer.exe,sha256=pF5nwE8vMWlEzkk-SOekae9zpOsPhTWhZbqa 
     | 
|
| 
       171 
171 
     | 
    
         
             
            wolfhece/lazviewer/viewer/viewer.py,sha256=8_MQCaQOS0Z_oRPiGoRy1lq-aCirReX3hWEBjQID0ig,24665
         
     | 
| 
       172 
172 
     | 
    
         
             
            wolfhece/libs/get_infos.cp310-win_amd64.pyd,sha256=45b6uo0r2zPD4KbpHR8QZC0TwQHDb9S0It7-kv0GWTA,77824
         
     | 
| 
       173 
173 
     | 
    
         
             
            wolfhece/libs/verify_wolf.cp310-win_amd64.pyd,sha256=ceWkovmTDfQcIzlxOBjUUDoHu6ZglOlUFADaRuAe3WM,127488
         
     | 
| 
       174 
     | 
    
         
            -
            wolfhece/libs/wolfogl.cp310-win_amd64.pyd,sha256= 
     | 
| 
      
 174 
     | 
    
         
            +
            wolfhece/libs/wolfogl.cp310-win_amd64.pyd,sha256=e27Epa44wBSrXiwzeUpl2ud8oCPJpFbfWd_5P5l6sAo,294912
         
     | 
| 
       175 
175 
     | 
    
         
             
            wolfhece/libs/wolfpy.cp310-win_amd64.pyd,sha256=6omqEaxmQll-Gg24e90wVomAB9rO_tyyOES2FewXn58,36457472
         
     | 
| 
       176 
176 
     | 
    
         
             
            wolfhece/libs/GL/gl.h,sha256=IhsS_fOLa8GW9MpiLZebe9QYRy6uIB_qK_uQMWMOoeg,46345
         
     | 
| 
       177 
177 
     | 
    
         
             
            wolfhece/libs/GL/glaux.h,sha256=I3vxXdrzVH05TmjEeAOgKn3egbPt34WMjbeKq5LaBvE,7130
         
     | 
| 
         @@ -249,8 +249,8 @@ wolfhece/ui/wolf_multiselection_collapsiblepane.py,sha256=8PlMYrb_8jI8h9F0_EagpM 
     | 
|
| 
       249 
249 
     | 
    
         
             
            wolfhece/ui/wolf_times_selection_comparison_models.py,sha256=ORy7fz4dcp691qKzaOZHrRLZ0uXNhL-LIHxmpDGL6BI,5007
         
     | 
| 
       250 
250 
     | 
    
         
             
            wolfhece/wintab/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
         
     | 
| 
       251 
251 
     | 
    
         
             
            wolfhece/wintab/wintab.py,sha256=8A-JNONV6ujgsgG3lM5Uw-pVgglPATwKs86oBzzljoc,7179
         
     | 
| 
       252 
     | 
    
         
            -
            wolfhece-2.1. 
     | 
| 
       253 
     | 
    
         
            -
            wolfhece-2.1. 
     | 
| 
       254 
     | 
    
         
            -
            wolfhece-2.1. 
     | 
| 
       255 
     | 
    
         
            -
            wolfhece-2.1. 
     | 
| 
       256 
     | 
    
         
            -
            wolfhece-2.1. 
     | 
| 
      
 252 
     | 
    
         
            +
            wolfhece-2.1.39.dist-info/METADATA,sha256=83wPlCtt2A7BPb-3QuxZrLSWn3AGA5uppBHC79HuiBU,2463
         
     | 
| 
      
 253 
     | 
    
         
            +
            wolfhece-2.1.39.dist-info/WHEEL,sha256=Wyh-_nZ0DJYolHNn1_hMa4lM7uDedD_RGVwbmTjyItk,91
         
     | 
| 
      
 254 
     | 
    
         
            +
            wolfhece-2.1.39.dist-info/entry_points.txt,sha256=yggeO1Fa80pi2BrOd9k5dTkiFlefGPwG6HztZhY0-qw,366
         
     | 
| 
      
 255 
     | 
    
         
            +
            wolfhece-2.1.39.dist-info/top_level.txt,sha256=EfqZXMVCn7eILUzx9xsEu2oBbSo9liWPFWjIHik0iCI,9
         
     | 
| 
      
 256 
     | 
    
         
            +
            wolfhece-2.1.39.dist-info/RECORD,,
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     | 
| 
         
            File without changes
         
     |