wolfhece 2.0.3__py3-none-any.whl → 2.0.4__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.
Files changed (55) hide show
  1. wolfhece/PyDraw.py +1 -1
  2. wolfhece/PyGui.py +1 -1
  3. wolfhece/RatingCurve_xml.py +1 -1
  4. wolfhece/cli.py +57 -0
  5. wolfhece/fonts/arial.ttf +0 -0
  6. wolfhece/fonts/helvetica.ttf +0 -0
  7. wolfhece/fonts/sanserif.ttf +0 -0
  8. wolfhece/libs/GL/gl.h +1044 -0
  9. wolfhece/libs/GL/glaux.h +272 -0
  10. wolfhece/libs/GL/glcorearb.h +3597 -0
  11. wolfhece/libs/GL/glext.h +11771 -0
  12. wolfhece/libs/GL/glu.h +255 -0
  13. wolfhece/libs/GL/glxext.h +926 -0
  14. wolfhece/libs/GL/wglext.h +840 -0
  15. wolfhece/libs/WolfOGL.c +28187 -0
  16. wolfhece/locales/{en-GB/LC_MESSAGES/base.po → base.pot} +19 -11
  17. wolfhece/models/HECE_169.pptx +0 -0
  18. wolfhece/models/blue.pal +9 -0
  19. wolfhece/models/diff16.pal +65 -0
  20. wolfhece/models/diff3.pal +13 -0
  21. wolfhece/models/red.pal +9 -0
  22. wolfhece/models/shields.pal +33 -0
  23. wolfhece/models/shields_cst.pal +21 -0
  24. wolfhece/models/waterdepths.pal +33 -0
  25. wolfhece/ui/wolf_multiselection_collapsiblepane.py +346 -0
  26. {wolfhece-2.0.3.dist-info → wolfhece-2.0.4.dist-info}/METADATA +9 -10
  27. {wolfhece-2.0.3.dist-info → wolfhece-2.0.4.dist-info}/RECORD +32 -33
  28. wolfhece-2.0.4.dist-info/entry_points.txt +8 -0
  29. wolfhece/apps/WolfPython.png +0 -0
  30. wolfhece/bernoulli/MQTT/CurlPython.py +0 -50
  31. wolfhece/bernoulli/MQTT/Example_MQTT_Epanet_Ana.py +0 -67
  32. wolfhece/bernoulli/MQTT/Local_File.py +0 -139
  33. wolfhece/bernoulli/MQTT/Local_Test_Thingsboard.py +0 -94
  34. wolfhece/bernoulli/MQTT/NewTestThings.py +0 -90
  35. wolfhece/bernoulli/MQTT/Reader_Thingsboard.py +0 -40
  36. wolfhece/bernoulli/MQTT/Thingsboard.py +0 -76
  37. wolfhece/bernoulli/Pyth_bern.cp37-win_amd64.pyd +0 -0
  38. wolfhece/bernoulli/exit3.png +0 -0
  39. wolfhece/bernoulli/exit7.png +0 -0
  40. wolfhece/bernoulli/exit8.png +0 -0
  41. wolfhece/bernoulli/fib8.cp37-win_amd64.pyd +0 -0
  42. wolfhece/lazviewer/libs/qt_plugins/platforms/qwindows.dll +0 -0
  43. wolfhece/libs/compile_wcython.py +0 -25
  44. wolfhece/locales/en/LC_MESSAGES/base.mo +0 -0
  45. wolfhece/locales/en/LC_MESSAGES/base.po +0 -53
  46. wolfhece/locales/en-GB/LC_MESSAGES/base.mo +0 -0
  47. wolfhece/locales/fr/LC_MESSAGES/base.mo +0 -0
  48. wolfhece/locales/fr/LC_MESSAGES/base.po +0 -62
  49. wolfhece/locales/fr-FR/LC_MESSAGES/base.mo +0 -0
  50. wolfhece/locales/fr-FR/LC_MESSAGES/base.po +0 -62
  51. wolfhece-2.0.3.dist-info/LICENCE +0 -19
  52. /wolfhece/{bernoulli/MQTT → fonts}/__init__.py +0 -0
  53. /wolfhece/{libs → ui}/__init__.py +0 -0
  54. {wolfhece-2.0.3.dist-info → wolfhece-2.0.4.dist-info}/WHEEL +0 -0
  55. {wolfhece-2.0.3.dist-info → wolfhece-2.0.4.dist-info}/top_level.txt +0 -0
@@ -5,7 +5,7 @@
5
5
  msgid ""
6
6
  msgstr ""
7
7
  "Project-Id-Version: PACKAGE VERSION\n"
8
- "POT-Creation-Date: 2021-11-22 16:32+0100\n"
8
+ "POT-Creation-Date: 2021-11-22 17:39+0100\n"
9
9
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
10
10
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
11
11
  "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -15,39 +15,47 @@ msgstr ""
15
15
  "Generated-By: pygettext.py 1.5\n"
16
16
 
17
17
 
18
- #: PyGuiHydrology.py:12
18
+ #: PyDraw.py:207
19
+ msgid "Open"
20
+ msgstr ""
21
+
22
+ #: PyDraw.py:208
23
+ msgid "Save"
24
+ msgstr ""
25
+
26
+ #: PyGuiHydrology.py:14
19
27
  msgid "General parameters"
20
28
  msgstr ""
21
29
 
22
- #: PyGuiHydrology.py:12
30
+ #: PyGuiHydrology.py:14
23
31
  msgid "Main model"
24
32
  msgstr ""
25
33
 
26
- #: PyGuiHydrology.py:13
34
+ #: PyGuiHydrology.py:15
27
35
  msgid "Basin"
28
36
  msgstr ""
29
37
 
30
- #: PyGuiHydrology.py:13
38
+ #: PyGuiHydrology.py:15
31
39
  msgid "Basin parameters"
32
40
  msgstr ""
33
41
 
34
- #: PyGuiHydrology.py:14
42
+ #: PyGuiHydrology.py:16
35
43
  msgid "&Parameters"
36
- msgstr "&Paramstt"
44
+ msgstr ""
37
45
 
38
- #: PyGuiHydrology.py:17
46
+ #: PyGuiHydrology.py:19
39
47
  msgid "My new tool..."
40
48
  msgstr ""
41
49
 
42
- #: PyGuiHydrology.py:17
50
+ #: PyGuiHydrology.py:19
43
51
  msgid "New tool"
44
52
  msgstr ""
45
53
 
46
- #: PyGuiHydrology.py:18
54
+ #: PyGuiHydrology.py:20
47
55
  msgid "&Tools"
48
56
  msgstr ""
49
57
 
50
- #: PyGuiHydrology.py:29
58
+ #: PyGuiHydrology.py:31
51
59
  msgid "Do anything !!"
52
60
  msgstr ""
53
61
 
Binary file
@@ -0,0 +1,9 @@
1
+ 2
2
+ 0.0
3
+ 0
4
+ 0
5
+ 255
6
+ 10.
7
+ 0
8
+ 0
9
+ 255
@@ -0,0 +1,65 @@
1
+ 16
2
+ -25.0
3
+ 128
4
+ 255
5
+ 255
6
+ -15.0
7
+ 89
8
+ 172
9
+ 255
10
+ -5.0
11
+ 72
12
+ 72
13
+ 255
14
+ -3.0
15
+ 0
16
+ 0
17
+ 255
18
+ -2.0
19
+ 0
20
+ 128
21
+ 0
22
+ -1.0
23
+ 0
24
+ 221
25
+ 55
26
+ -0.5
27
+ 128
28
+ 255
29
+ 128
30
+ 0.0
31
+ 255
32
+ 255
33
+ 0
34
+ 0.5
35
+ 255
36
+ 128
37
+ 0
38
+ 1.0
39
+ 235
40
+ 174
41
+ 63
42
+ 2.0
43
+ 255
44
+ 0
45
+ 0
46
+ 3.0
47
+ 209
48
+ 71
49
+ 12
50
+ 5.0
51
+ 128
52
+ 0
53
+ 0
54
+ 15.0
55
+ 185
56
+ 0
57
+ 0
58
+ 25.0
59
+ 111
60
+ 111
61
+ 111
62
+ 50.0
63
+ 192
64
+ 192
65
+ 192
@@ -0,0 +1,13 @@
1
+ 3
2
+ -1.0
3
+ 255
4
+ 0
5
+ 0
6
+ 0.0
7
+ 0
8
+ 255
9
+ 0
10
+ 1
11
+ 0
12
+ 0
13
+ 255
@@ -0,0 +1,9 @@
1
+ 2
2
+ 0.0
3
+ 255
4
+ 0
5
+ 0
6
+ 10.
7
+ 255
8
+ 0
9
+ 0
@@ -0,0 +1,33 @@
1
+ 8
2
+ 0.0
3
+ 0
4
+ 255
5
+ 255
6
+ 0.039999999
7
+ 0
8
+ 255
9
+ 255
10
+ 0.04
11
+ 0
12
+ 0
13
+ 255
14
+ 0.059999999
15
+ 0
16
+ 0
17
+ 255
18
+ 0.06
19
+ 255
20
+ 128
21
+ 0
22
+ 0.119999999
23
+ 255
24
+ 128
25
+ 0
26
+ 0.12
27
+ 255
28
+ 0
29
+ 0
30
+ 0.2
31
+ 255
32
+ 0
33
+ 0
@@ -0,0 +1,21 @@
1
+ 5
2
+ 0.0
3
+ 0
4
+ 255
5
+ 255
6
+ 0.04
7
+ 0
8
+ 0
9
+ 255
10
+ 0.06
11
+ 255
12
+ 128
13
+ 0
14
+ 0.12
15
+ 255
16
+ 0
17
+ 0
18
+ 0.2
19
+ 255
20
+ 0
21
+ 0
@@ -0,0 +1,33 @@
1
+ 7
2
+ 0
3
+ 0
4
+ 255
5
+ 0
6
+ 0.05
7
+ 0
8
+ 200
9
+ 0
10
+ 0.1
11
+ 0
12
+ 128
13
+ 128
14
+ 0.2
15
+ 0
16
+ 128
17
+ 128
18
+ 0.3
19
+ 0
20
+ 0
21
+ 200
22
+ .4
23
+ 0
24
+ 0
25
+ 128
26
+ 0.5
27
+ 255
28
+ 0
29
+ 0
30
+ 0
31
+ 16777215
32
+ 0
33
+ 1
@@ -0,0 +1,346 @@
1
+ import wx
2
+ import logging
3
+
4
+ class Wolf_TwoLists_Transfer(wx.Panel):
5
+ """ Panel with 2 lists to select multiple items from 1 to 2 or from 2 to 1"""
6
+
7
+ def __init__(self, parent, **kwargs):
8
+ """
9
+ @param parent : wx.Window
10
+ @param kwargs : dict - other arguments for wx.Panel (example : max_selected_items=3, delete_if_transfer=True)
11
+ """
12
+
13
+ super().__init__(parent)
14
+
15
+ self.delete_if_transfer = True
16
+ self.max_selected_items = None
17
+
18
+ if 'max_selected_items' in kwargs:
19
+ self.max_selected_items = kwargs['max_selected_items']
20
+ assert isinstance(self.max_selected_items, int), "max_selected_items must be an integer"
21
+
22
+ if 'delete_if_transfer' in kwargs:
23
+ self.delete_if_transfer = kwargs['delete_if_transfer']
24
+ assert isinstance(self.delete_if_transfer, bool), "delete_if_transfer must be a boolean"
25
+
26
+ # Créer les deux listes à sélection multiples
27
+ self.list1 = wx.ListBox(self, style=wx.LB_EXTENDED | wx.LB_NEEDED_SB)
28
+ self.list2 = wx.ListBox(self, style=wx.LB_EXTENDED | wx.LB_NEEDED_SB)
29
+
30
+ # Créer les boutons pour transférer les éléments sélectionnés
31
+ self.button1to2 = wx.Button(self, label=">>")
32
+ self.button2to1 = wx.Button(self, label="<<")
33
+
34
+ # Créer les boutons pour trier les listes
35
+ self.buttonSort1 = wx.Button(self, label="Sort left")
36
+ self.buttonSort2 = wx.Button(self, label="Sort right")
37
+ self.buttonall1to2 = wx.Button(self, label="All 1 >> 2")
38
+ self.buttonall2to1 = wx.Button(self, label="All 1 << 2")
39
+
40
+ # créer le sizer vertical pour les boutons
41
+ sizer_vertical = wx.BoxSizer(wx.VERTICAL)
42
+ sizer_vertical.Add(self.button1to2, proportion=1, flag=wx.GROW | wx.ALL, border=2)
43
+ sizer_vertical.Add(self.button2to1, proportion=1, flag=wx.GROW | wx.ALL, border=2)
44
+ sizer_vertical.Add(self.buttonSort1, proportion=1, flag=wx.GROW | wx.ALL, border=2)
45
+ sizer_vertical.Add(self.buttonSort2, proportion=1, flag=wx.GROW | wx.ALL, border=2)
46
+ sizer_vertical.Add(self.buttonall1to2, proportion=1, flag=wx.GROW | wx.ALL, border=2)
47
+ sizer_vertical.Add(self.buttonall2to1, proportion=1, flag=wx.GROW | wx.ALL, border=2)
48
+
49
+ # Créer le sizer horizontal pour aligner les éléments
50
+ sizer_horizontal = wx.BoxSizer(wx.HORIZONTAL)
51
+
52
+ # Ajouter les éléments au sizer horizontal
53
+ sizer_horizontal.Add(self.list1, proportion=1, flag=wx.GROW | wx.ALL, border=2)
54
+ sizer_horizontal.Add(sizer_vertical,proportion=1, flag=wx.GROW | wx.ALL, border=2)
55
+ sizer_horizontal.Add(self.list2, proportion=1, flag=wx.GROW | wx.ALL, border=2)
56
+
57
+ # Définir le sizer pour le panneau
58
+ self.SetSizer(sizer_horizontal)
59
+ # self.Layout()
60
+ sizer_horizontal.SetSizeHints(self)
61
+
62
+ self._ui_bind_actions()
63
+
64
+ def get_values(self):
65
+ """ Get values of the lists """
66
+ return self.list2.Items
67
+
68
+ def set_max_selected_items(self, max_selected_items:int):
69
+ """ set the maximum number of selected items that list1 can transfer to list2 """
70
+
71
+ assert isinstance(max_selected_items, int), "max_selected_items must be an integer"
72
+ assert len(self.list1.Items) >= max_selected_items, "len(self.list1.Items) must be >= max_selected_items"
73
+ self.max_selected_items = max_selected_items
74
+
75
+ def _ui_bind_actions(self):
76
+ """ Bind actions to buttons """
77
+ self.button1to2.Bind(wx.EVT_BUTTON, self._on_button1to2)
78
+ self.button2to1.Bind(wx.EVT_BUTTON, self._on_button2to1)
79
+ self.buttonSort1.Bind(wx.EVT_BUTTON, self._on_buttonSort1)
80
+ self.buttonSort2.Bind(wx.EVT_BUTTON, self._on_buttonSort2)
81
+ self.buttonall1to2.Bind(wx.EVT_BUTTON, self._on_buttonAll1to2)
82
+ self.buttonall2to1.Bind(wx.EVT_BUTTON, self._on_buttonAll2to1)
83
+
84
+ def _on_buttonAll1to2(self, event):
85
+ """ Clear list 2 """
86
+ for i in range(len(self.list1.Items)):
87
+ self.list1.Select(i)
88
+ self._on_button1to2(wx.EVT_BUTTON)
89
+
90
+ def _on_buttonAll2to1(self, event):
91
+ """ Clear list 2 """
92
+ for i in range(len(self.list2.Items)):
93
+ self.list2.Select(i)
94
+ self._on_button2to1(wx.EVT_BUTTON)
95
+
96
+ def _on_buttonSort1(self, event):
97
+ """ Sort items of list 1 """
98
+ if len(self.list1.Items)==0:
99
+ return
100
+ # Récupérer les éléments de la liste 1
101
+ items = self.list1.Items
102
+ # Trier les éléments
103
+ items.sort()
104
+ # Supprimer les éléments de la liste 1
105
+ self.list1.Clear()
106
+ # Ajouter les éléments triés à la liste 1
107
+ self.list1.InsertItems(items, 0)
108
+
109
+ def _on_buttonSort2(self, event):
110
+ """ Sort items of list 2 """
111
+ if len(self.list2.Items)==0:
112
+ return
113
+ # Récupérer les éléments de la liste 2
114
+ items = self.list2.Items
115
+ # Trier les éléments
116
+ items.sort()
117
+ # Supprimer les éléments de la liste 2
118
+ self.list2.Clear()
119
+ # Ajouter les éléments triés à la liste 2
120
+ self.list2.InsertItems(items, 0)
121
+
122
+ def _on_button1to2(self, event):
123
+ """ Transfer selected items from list 1 to list 2 """
124
+ # Récupérer les éléments sélectionnés de la liste 1
125
+ selected_items = self.list1.GetSelections()
126
+ if len(selected_items) == 0:
127
+ return
128
+
129
+ if self.max_selected_items is not None:
130
+ if self.max_selected_items > -1:
131
+ if len(selected_items) > self.max_selected_items:
132
+ logging.warning(f"Max selected items is {self.max_selected_items}")
133
+ return
134
+ if len(self.list2.Items) + len(selected_items) > self.max_selected_items:
135
+ logging.warning(f"Max selected items is {self.max_selected_items}")
136
+ return
137
+
138
+ # Ajouter les éléments sélectionnés à la liste 2
139
+ self.list2.InsertItems([self.list1.GetString(item) for item in selected_items], 0)
140
+
141
+ if self.delete_if_transfer:
142
+ # Supprimer les éléments sélectionnés de la liste 1
143
+ selected_items.sort(reverse=True)
144
+ for n in selected_items:
145
+ self.list1.Delete(n)
146
+
147
+ def _on_button2to1(self, event):
148
+ """ Transfer selected items from list 2 to list 1 """
149
+ # Récupérer les éléments sélectionnés de la liste 2
150
+ selected_items = self.list2.GetSelections()
151
+ if len(selected_items) == 0:
152
+ return
153
+ # Ajouter les éléments sélectionnés à la liste 1
154
+ self.list1.InsertItems([self.list2.GetString(item) for item in selected_items], 0)
155
+
156
+ # Supprimer les éléments sélectionnés de la liste 2
157
+ selected_items.sort(reverse=True)
158
+ for n in selected_items:
159
+ self.list2.Delete(n)
160
+
161
+
162
+ class Wolf_MultipleSelection(wx.Dialog):
163
+ """
164
+ Dialog with multiple 'collapsiblepanes' containing 2 lists to select multiple items
165
+ """
166
+ def __init__(self,
167
+ parent,
168
+ title,
169
+ values_dict:dict,
170
+ callback = None,
171
+ info:str='',
172
+ cmdApply:bool=False,
173
+ styles = wx.LB_EXTENDED,
174
+ destroyOK = False,
175
+ **kwargs):
176
+ """
177
+ @param parent : wx.Window
178
+ @param title : str - title of the frame
179
+ @param values_dict : dict - {'label1':[item1, item2, ...], 'label2':[item1, item2, ...], ...}
180
+ @param callback : function - callback function when OK or Apply button is pressed
181
+ @param info : str - information to display upper the collapsiblepanes
182
+ @param cmdApply : bool - if True, Apply button is displayed
183
+ @param styles : wx.ListBox styles - wx constant or list of wx constants
184
+ @param kwargs : dict - other arguments for wx.Frame (example : max_selected_items=[1, 2, 3], delete_if_transfer=[True, False, True])
185
+ """
186
+ if isinstance(styles, list):
187
+ assert len(styles) == len(values_dict), "styles must be a list of len(values_dict)"
188
+
189
+ if 'max_selected_items' in kwargs:
190
+ self.max_selected_items = kwargs['max_selected_items']
191
+ assert isinstance(self.max_selected_items, list), "max_selected_items must be a list"
192
+ assert len(self.max_selected_items) == len(values_dict), "max_selected_items must be a list of len(values_dict)"
193
+ for i, values in enumerate(values_dict.values()):
194
+ assert len(values) >= self.max_selected_items[i], "len(values) must be >= max_selected_items"
195
+ else:
196
+ self.max_selected_items = None
197
+
198
+ if 'delete_if_transfer' in kwargs:
199
+ self.delete_if_transfer = kwargs['delete_if_transfer']
200
+ assert isinstance(self.delete_if_transfer, list), "delete_if_transfer must be a list"
201
+ assert len(self.delete_if_transfer) == len(values_dict), "delete_if_transfer must be a list of len(values_dict)"
202
+ for i, values in enumerate(values_dict.values()):
203
+ assert isinstance(self.delete_if_transfer[i], bool), "delete_if_transfer must be a list of boolean"
204
+
205
+ super().__init__(parent, title=title)
206
+
207
+ self.destroyOK = destroyOK
208
+ # Créer le panneau principal
209
+ main_panel = wx.Panel(self)
210
+
211
+ # Créer les collapsiblepanes
212
+ self.panes = []
213
+ for key, values in values_dict.items():
214
+ pane = wx.CollapsiblePane(main_panel, label=key)
215
+ self.panes.append(pane)
216
+
217
+ # Créer les panneaux internes pour les collapsiblepanes
218
+ pane_panels = [pane.GetPane() for pane in self.panes]
219
+
220
+ # Créer l'objet Wolf_TwoLists_Transfer pour chaque panneau interne
221
+ self.transfers = []
222
+ for i, values in enumerate(values_dict.values()):
223
+ transfer = Wolf_TwoLists_Transfer(pane_panels[i])
224
+
225
+ if isinstance(styles, list):
226
+ transfer.list1.SetWindowStyle(styles[i])
227
+ transfer.list2.SetWindowStyle(styles[i])
228
+ else:
229
+ transfer.list1.SetWindowStyle(styles)
230
+ transfer.list2.SetWindowStyle(styles)
231
+
232
+ transfer.list1.Items = values
233
+
234
+ if self.max_selected_items is not None:
235
+ transfer.set_max_selected_items(self.max_selected_items[i])
236
+
237
+ if self.delete_if_transfer is not None:
238
+ transfer.delete_if_transfer = self.delete_if_transfer[i]
239
+
240
+ self.transfers.append(transfer)
241
+
242
+ # Créer le sizer vertical pour les collapsiblepanes
243
+ sizer_vertical = wx.BoxSizer(wx.VERTICAL)
244
+
245
+ text = wx.StaticText(main_panel, label=info)
246
+ sizer_vertical.Add(text, proportion=0, flag=wx.GROW | wx.ALL, border=5)
247
+
248
+ for i, pane in enumerate(self.panes):
249
+ sizer_vertical.Add(pane, proportion=0, flag=wx.GROW | wx.ALL, border=5)
250
+
251
+ # Créer les boutons OK et Apply
252
+ sizer_horizontal_buttons = wx.BoxSizer(wx.HORIZONTAL)
253
+ self.buttonOK = wx.Button(main_panel, label="OK")
254
+ sizer_horizontal_buttons.Add(self.buttonOK, proportion=0, flag=wx.ALL, border=5)
255
+ if cmdApply:
256
+ self.buttonApply = wx.Button(main_panel, label="Apply")
257
+ sizer_horizontal_buttons.Add(self.buttonApply, proportion=0, flag=wx.ALL, border=5)
258
+ sizer_vertical.Add(sizer_horizontal_buttons, proportion=0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
259
+ else:
260
+ self.buttonApply = None
261
+ sizer_vertical.Add(sizer_horizontal_buttons, proportion=0, flag=wx.ALIGN_RIGHT | wx.ALL, border=5)
262
+
263
+ # Callback if ok/apply button is pressed
264
+ self.callback = callback
265
+
266
+ # Définir le sizer pour le panneau principal
267
+ main_panel.SetSizer(sizer_vertical)
268
+
269
+ # Définir le sizer pour la frame
270
+ self.SetSizer(wx.BoxSizer(wx.VERTICAL)) # Use SetSizerAndFit instead of SetSizer
271
+
272
+ # Ajouter le panneau principal à la frame
273
+ self.GetSizer().Add(main_panel, proportion=0, flag=wx.EXPAND)
274
+
275
+ # Définir la taille de la frame
276
+ self.Fit()
277
+
278
+ # Mise en page des éléments de la frame
279
+ sizer_vertical.SetSizeHints(self)
280
+
281
+ self.Layout()
282
+
283
+ self._ui_bind_actions()
284
+ # Afficher la frame
285
+ self.CenterOnScreen()
286
+
287
+ # def MakeModal(self, modal=True):
288
+ # if modal and not hasattr(self, '_disabler'):
289
+ # self._disabler = wx.WindowDisabler(self)
290
+ # if not modal and hasattr(self, '_disabler'):
291
+ # del self._disabler
292
+
293
+ # def ShowModal(self):
294
+ # """ Show the frame """
295
+ # self.Show()
296
+ # return self
297
+
298
+ # def Show(self):
299
+ # """ Show the frame """
300
+ # super().Show()
301
+ # return self
302
+
303
+ def get_values(self):
304
+ """ Get values of the lists """
305
+ keys = [curpane.GetLabel() for curpane in self.panes]
306
+ return {key: transfer.get_values() for key, transfer in zip(keys, self.transfers)}
307
+
308
+ def _ui_bind_actions(self):
309
+ """ Bind actions to buttons """
310
+
311
+ self.buttonOK.Bind(wx.EVT_BUTTON, self._on_buttonOK)
312
+
313
+ if self.buttonApply is not None:
314
+ self.buttonApply.Bind(wx.EVT_BUTTON, self._on_buttonApply)
315
+
316
+ def _on_buttonOK(self, event):
317
+ if self.callback is not None:
318
+ self.callback(self)
319
+
320
+ if self.destroyOK:
321
+ self.Destroy()
322
+ else:
323
+ self.Hide()
324
+
325
+ def _on_buttonApply(self, event):
326
+ """ callback """
327
+ if self.buttonApply is None:
328
+ return
329
+ if self.callback is not None:
330
+ self.callback(self)
331
+
332
+ if __name__ == "__main__":
333
+ # Utilisation de la classe Wolf_MultipleSelection
334
+ app = wx.App()
335
+ frame = Wolf_MultipleSelection(None,
336
+ title="Exemple de Wolf_MultipleSelection",
337
+ values_dict={'domain':["Item 1", "Item 2", "Item 3", "Item 4"],
338
+ 'u':["Item 3", "Item 4", "Item 5", "Item 6"],
339
+ 'v':["Item v1", "Item v2", "Item v3", "Item v4"]},
340
+ info="You can define : \n - the domain\n - u\n -v",
341
+ callback=None,
342
+ styles=[wx.LB_SINGLE, wx.LB_EXTENDED, wx.LB_EXTENDED],
343
+ max_selected_items=[1, -1, -1],)
344
+ frame.ShowModal()
345
+ pass
346
+ app.MainLoop()
@@ -1,17 +1,15 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wolfhece
3
- Version: 2.0.3
4
- Summary: WOLF package
5
- Home-page: https://uee.uliege.be/hece
6
- Author: Pierre Archambeau
7
- Author-email: pierre.archambeau@uliege.be
8
- Project-URL: Bug Tracker, https://uee.uliege.be/hece
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: License :: OSI Approved :: MIT License
11
- Classifier: Operating System :: OS Independent
3
+ Version: 2.0.4
4
+ Author-email: Stéphane Champailler <stephane.champailler@uliege.be>, Pierre Archambeau <pierre.archambeau@uliege.be>
5
+ Project-URL: Homepage, https://uee.uliege.be/hece
6
+ Project-URL: Issues, https://uee.uliege.be/hece
7
+ Classifier: Programming Language :: Python :: 3.9
8
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 10
9
+ Classifier: Operating System :: Microsoft :: Windows :: Windows 11
10
+ Classifier: Topic :: Scientific/Engineering :: Physics
12
11
  Requires-Python: <3.11,>=3.9
13
12
  Description-Content-Type: text/markdown
14
- License-File: LICENCE
15
13
  Requires-Dist: wxpython
16
14
  Requires-Dist: numpy
17
15
  Requires-Dist: pyopengl
@@ -48,6 +46,7 @@ Requires-Dist: osmnx
48
46
  Requires-Dist: tifffile
49
47
  Requires-Dist: numba
50
48
  Requires-Dist: xmltodict
49
+ Requires-Dist: opencv-python
51
50
 
52
51
  Ce paquet contient l'interface graphique Python du logiciel WOLF (HECE - ULiège) de même que plusieurs outils de traitements topographique, hydraulique et hydrologique.
53
52