PaIRS-UniNa 0.1.13__cp310-cp310-win_amd64.whl → 0.2.8__cp310-cp310-win_amd64.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 (292) hide show
  1. PaIRS_UniNa/Calibration_Tab.py +331 -0
  2. PaIRS_UniNa/Changes.txt +134 -2
  3. PaIRS_UniNa/Custom_Top.py +299 -299
  4. PaIRS_UniNa/Explorer.py +3136 -0
  5. PaIRS_UniNa/FolderLoop.py +562 -0
  6. PaIRS_UniNa/Input_Tab.py +831 -0
  7. PaIRS_UniNa/Input_Tab_CalVi.py +786 -0
  8. PaIRS_UniNa/Input_Tab_tools.py +3025 -0
  9. PaIRS_UniNa/Log_Tab.py +57 -14
  10. PaIRS_UniNa/Output_Tab.py +922 -0
  11. PaIRS_UniNa/PaIRS_PIV.py +111 -18
  12. PaIRS_UniNa/PaIRS_pypacks.py +698 -140
  13. PaIRS_UniNa/Process_Tab.py +1221 -1402
  14. PaIRS_UniNa/Process_Tab_CalVi.py +137 -262
  15. PaIRS_UniNa/Process_Tab_Disp.py +163 -0
  16. PaIRS_UniNa/Process_Tab_Min.py +120 -0
  17. PaIRS_UniNa/Saving_tools.py +296 -0
  18. PaIRS_UniNa/TabTools.py +863 -543
  19. PaIRS_UniNa/Vis_Tab.py +1898 -1315
  20. PaIRS_UniNa/Vis_Tab_CalVi.py +484 -356
  21. PaIRS_UniNa/Whatsnew.py +59 -10
  22. PaIRS_UniNa/_PaIRS_PIV.pyd +0 -0
  23. PaIRS_UniNa/__init__.py +4 -3
  24. PaIRS_UniNa/addwidgets_ps.py +326 -56
  25. PaIRS_UniNa/calib.py +19 -12
  26. PaIRS_UniNa/calibView.py +48 -25
  27. PaIRS_UniNa/gPaIRS.py +3902 -3461
  28. PaIRS_UniNa/gPalette.py +189 -170
  29. PaIRS_UniNa/icons/align_all.png +0 -0
  30. PaIRS_UniNa/icons/announcement.png +0 -0
  31. PaIRS_UniNa/icons/automatic_levels_off.png +0 -0
  32. PaIRS_UniNa/icons/automatic_levels_on.png +0 -0
  33. PaIRS_UniNa/icons/automatic_off.png +0 -0
  34. PaIRS_UniNa/icons/automatic_on.png +0 -0
  35. PaIRS_UniNa/icons/automatic_size_off.png +0 -0
  36. PaIRS_UniNa/icons/automatic_size_on.png +0 -0
  37. PaIRS_UniNa/icons/bin_off.png +0 -0
  38. PaIRS_UniNa/icons/bin_on.png +0 -0
  39. PaIRS_UniNa/icons/brush_cursor.png +0 -0
  40. PaIRS_UniNa/icons/bugfix.png +0 -0
  41. PaIRS_UniNa/icons/cal_proc.png +0 -0
  42. PaIRS_UniNa/icons/cal_proc_off.png +0 -0
  43. PaIRS_UniNa/icons/cal_step.png +0 -0
  44. PaIRS_UniNa/icons/cal_step_off.png +0 -0
  45. PaIRS_UniNa/icons/calibration_logo.png +0 -0
  46. PaIRS_UniNa/icons/change_folder.png +0 -0
  47. PaIRS_UniNa/icons/change_folder_off.png +0 -0
  48. PaIRS_UniNa/icons/close_all.png +0 -0
  49. PaIRS_UniNa/icons/close_workspace.png +0 -0
  50. PaIRS_UniNa/icons/colormap.png +0 -0
  51. PaIRS_UniNa/icons/colormaps/Accent.png +0 -0
  52. PaIRS_UniNa/icons/colormaps/BrBG.png +0 -0
  53. PaIRS_UniNa/icons/colormaps/Dark2.png +0 -0
  54. PaIRS_UniNa/icons/colormaps/PRGn.png +0 -0
  55. PaIRS_UniNa/icons/colormaps/Paired.png +0 -0
  56. PaIRS_UniNa/icons/colormaps/Pastel1.png +0 -0
  57. PaIRS_UniNa/icons/colormaps/Pastel2.png +0 -0
  58. PaIRS_UniNa/icons/colormaps/PiYG.png +0 -0
  59. PaIRS_UniNa/icons/colormaps/PuOr.png +0 -0
  60. PaIRS_UniNa/icons/colormaps/RdBu.png +0 -0
  61. PaIRS_UniNa/icons/colormaps/RdGy.png +0 -0
  62. PaIRS_UniNa/icons/colormaps/RdYlBu.png +0 -0
  63. PaIRS_UniNa/icons/colormaps/RdYlGn.png +0 -0
  64. PaIRS_UniNa/icons/colormaps/Set1.png +0 -0
  65. PaIRS_UniNa/icons/colormaps/Set2.png +0 -0
  66. PaIRS_UniNa/icons/colormaps/Set3.png +0 -0
  67. PaIRS_UniNa/icons/colormaps/Spectral.png +0 -0
  68. PaIRS_UniNa/icons/colormaps/Wistia.png +0 -0
  69. PaIRS_UniNa/icons/colormaps/afmhot.png +0 -0
  70. PaIRS_UniNa/icons/colormaps/autumn.png +0 -0
  71. PaIRS_UniNa/icons/colormaps/binary.png +0 -0
  72. PaIRS_UniNa/icons/colormaps/blackVector.png +0 -0
  73. PaIRS_UniNa/icons/colormaps/blueVector.png +0 -0
  74. PaIRS_UniNa/icons/colormaps/bone.png +0 -0
  75. PaIRS_UniNa/icons/colormaps/brg.png +0 -0
  76. PaIRS_UniNa/icons/colormaps/bwr.png +0 -0
  77. PaIRS_UniNa/icons/colormaps/cividis.png +0 -0
  78. PaIRS_UniNa/icons/colormaps/cool.png +0 -0
  79. PaIRS_UniNa/icons/colormaps/coolwarm.png +0 -0
  80. PaIRS_UniNa/icons/colormaps/copper.png +0 -0
  81. PaIRS_UniNa/icons/colormaps/cubehelix.png +0 -0
  82. PaIRS_UniNa/icons/colormaps/cyanVector.png +0 -0
  83. PaIRS_UniNa/icons/colormaps/flag.png +0 -0
  84. PaIRS_UniNa/icons/colormaps/gist_heat.png +0 -0
  85. PaIRS_UniNa/icons/colormaps/gray.png +0 -0
  86. PaIRS_UniNa/icons/colormaps/greenVector.png +0 -0
  87. PaIRS_UniNa/icons/colormaps/hot.png +0 -0
  88. PaIRS_UniNa/icons/colormaps/hsv.png +0 -0
  89. PaIRS_UniNa/icons/colormaps/inferno.png +0 -0
  90. PaIRS_UniNa/icons/colormaps/jet.png +0 -0
  91. PaIRS_UniNa/icons/colormaps/magentaVector.png +0 -0
  92. PaIRS_UniNa/icons/colormaps/magma.png +0 -0
  93. PaIRS_UniNa/icons/colormaps/ocean.png +0 -0
  94. PaIRS_UniNa/icons/colormaps/pink.png +0 -0
  95. PaIRS_UniNa/icons/colormaps/plasma.png +0 -0
  96. PaIRS_UniNa/icons/colormaps/prism.png +0 -0
  97. PaIRS_UniNa/icons/colormaps/rainbow.png +0 -0
  98. PaIRS_UniNa/icons/colormaps/redVector.png +0 -0
  99. PaIRS_UniNa/icons/colormaps/seismic.png +0 -0
  100. PaIRS_UniNa/icons/colormaps/spring.png +0 -0
  101. PaIRS_UniNa/icons/colormaps/summer.png +0 -0
  102. PaIRS_UniNa/icons/colormaps/tab10.png +0 -0
  103. PaIRS_UniNa/icons/colormaps/tab20.png +0 -0
  104. PaIRS_UniNa/icons/colormaps/tab20b.png +0 -0
  105. PaIRS_UniNa/icons/colormaps/tab20c.png +0 -0
  106. PaIRS_UniNa/icons/colormaps/terrain.png +0 -0
  107. PaIRS_UniNa/icons/colormaps/twilight.png +0 -0
  108. PaIRS_UniNa/icons/colormaps/viridis.png +0 -0
  109. PaIRS_UniNa/icons/colormaps/whiteVector.png +0 -0
  110. PaIRS_UniNa/icons/colormaps/winter.png +0 -0
  111. PaIRS_UniNa/icons/colormaps/yellowVector.png +0 -0
  112. PaIRS_UniNa/icons/common_region.png +0 -0
  113. PaIRS_UniNa/icons/common_region_off.png +0 -0
  114. PaIRS_UniNa/icons/completed.png +0 -0
  115. PaIRS_UniNa/icons/contourf_off.png +0 -0
  116. PaIRS_UniNa/icons/contourf_on.png +0 -0
  117. PaIRS_UniNa/icons/copy.png +0 -0
  118. PaIRS_UniNa/icons/copy_process.png +0 -0
  119. PaIRS_UniNa/icons/copy_process_off.png +0 -0
  120. PaIRS_UniNa/icons/cut.png +0 -0
  121. PaIRS_UniNa/icons/cut_warnings.png +0 -0
  122. PaIRS_UniNa/icons/darkmode.png +0 -0
  123. PaIRS_UniNa/icons/disp_step.png +0 -0
  124. PaIRS_UniNa/icons/disp_step_off.png +0 -0
  125. PaIRS_UniNa/icons/edit_list.png +0 -0
  126. PaIRS_UniNa/icons/example_list.png +0 -0
  127. PaIRS_UniNa/icons/flaticon_PaIRS_beta.png +0 -0
  128. PaIRS_UniNa/icons/flaticon_PaIRS_download_warning.png +0 -0
  129. PaIRS_UniNa/icons/flip_y_off.png +0 -0
  130. PaIRS_UniNa/icons/flip_y_on.png +0 -0
  131. PaIRS_UniNa/icons/folder_loop_cleanup.png +0 -0
  132. PaIRS_UniNa/icons/folder_loop_cleanup_off.png +0 -0
  133. PaIRS_UniNa/icons/gear.gif +0 -0
  134. PaIRS_UniNa/icons/gear.png +0 -0
  135. PaIRS_UniNa/icons/import_set.png +0 -0
  136. PaIRS_UniNa/icons/information.png +0 -0
  137. PaIRS_UniNa/icons/input_logo.png +0 -0
  138. PaIRS_UniNa/icons/issue.png +0 -0
  139. PaIRS_UniNa/icons/laser_NTR.png +0 -0
  140. PaIRS_UniNa/icons/laser_TR_double.png +0 -0
  141. PaIRS_UniNa/icons/laser_TR_single.png +0 -0
  142. PaIRS_UniNa/icons/link.png +0 -0
  143. PaIRS_UniNa/icons/linked.png +0 -0
  144. PaIRS_UniNa/icons/log_logo.png +0 -0
  145. PaIRS_UniNa/icons/logo_opaco.png +0 -0
  146. PaIRS_UniNa/icons/measure.png +0 -0
  147. PaIRS_UniNa/icons/measure_off.png +0 -0
  148. PaIRS_UniNa/icons/min_proc.png +0 -0
  149. PaIRS_UniNa/icons/min_proc_off.png +0 -0
  150. PaIRS_UniNa/icons/min_step.png +0 -0
  151. PaIRS_UniNa/icons/min_step_off.png +0 -0
  152. PaIRS_UniNa/icons/new_workspace.png +0 -0
  153. PaIRS_UniNa/icons/open_image.png +0 -0
  154. PaIRS_UniNa/icons/open_new_window.png +0 -0
  155. PaIRS_UniNa/icons/open_result.png +0 -0
  156. PaIRS_UniNa/icons/open_workspace.png +0 -0
  157. PaIRS_UniNa/icons/output_logo.png +0 -0
  158. PaIRS_UniNa/icons/paste_above.png +0 -0
  159. PaIRS_UniNa/icons/paste_below.png +0 -0
  160. PaIRS_UniNa/icons/paused.png +0 -0
  161. PaIRS_UniNa/icons/piv_proc.png +0 -0
  162. PaIRS_UniNa/icons/piv_proc_off.png +0 -0
  163. PaIRS_UniNa/icons/piv_step.png +0 -0
  164. PaIRS_UniNa/icons/piv_step_off.png +0 -0
  165. PaIRS_UniNa/icons/process_logo.png +0 -0
  166. PaIRS_UniNa/icons/process_loop.png +0 -0
  167. PaIRS_UniNa/icons/project.png +0 -0
  168. PaIRS_UniNa/icons/pylog.png +0 -0
  169. PaIRS_UniNa/icons/python_warning.png +0 -0
  170. PaIRS_UniNa/icons/queue.png +0 -0
  171. PaIRS_UniNa/icons/read.png +0 -0
  172. PaIRS_UniNa/icons/read_list.png +0 -0
  173. PaIRS_UniNa/icons/reset.png +0 -0
  174. PaIRS_UniNa/icons/reset_levels.png +0 -0
  175. PaIRS_UniNa/icons/restore_undo.png +0 -0
  176. PaIRS_UniNa/icons/running.gif +0 -0
  177. PaIRS_UniNa/icons/running.png +0 -0
  178. PaIRS_UniNa/icons/running_warn.png +0 -0
  179. PaIRS_UniNa/icons/save_and_stop.png +0 -0
  180. PaIRS_UniNa/icons/save_cfg.png +0 -0
  181. PaIRS_UniNa/icons/saveas_workspace.png +0 -0
  182. PaIRS_UniNa/icons/scale_all.png +0 -0
  183. PaIRS_UniNa/icons/scale_down.png +0 -0
  184. PaIRS_UniNa/icons/scale_up.png +0 -0
  185. PaIRS_UniNa/icons/scan_list.png +0 -0
  186. PaIRS_UniNa/icons/scan_path.png +0 -0
  187. PaIRS_UniNa/icons/scan_path_loop.png +0 -0
  188. PaIRS_UniNa/icons/scan_path_loop_off.png +0 -0
  189. PaIRS_UniNa/icons/search.png +0 -0
  190. PaIRS_UniNa/icons/showIW_off.png +0 -0
  191. PaIRS_UniNa/icons/showIW_on.png +0 -0
  192. PaIRS_UniNa/icons/show_all.png +0 -0
  193. PaIRS_UniNa/icons/sort.png +0 -0
  194. PaIRS_UniNa/icons/sort_reversed.png +0 -0
  195. PaIRS_UniNa/icons/spiv_proc.png +0 -0
  196. PaIRS_UniNa/icons/spiv_proc_off.png +0 -0
  197. PaIRS_UniNa/icons/star.png +0 -0
  198. PaIRS_UniNa/icons/step_inheritance.png +0 -0
  199. PaIRS_UniNa/icons/subMIN_off.png +0 -0
  200. PaIRS_UniNa/icons/subMIN_on.png +0 -0
  201. PaIRS_UniNa/icons/unedited.png +0 -0
  202. PaIRS_UniNa/icons/uninitialized.png +0 -0
  203. PaIRS_UniNa/icons/unlink.png +0 -0
  204. PaIRS_UniNa/icons/unwrap_items.png +0 -0
  205. PaIRS_UniNa/icons/vectorColor.png +0 -0
  206. PaIRS_UniNa/icons/view.png +0 -0
  207. PaIRS_UniNa/icons/view_off.png +0 -0
  208. PaIRS_UniNa/icons/vis_logo.png +0 -0
  209. PaIRS_UniNa/icons/warning_circle.png +0 -0
  210. PaIRS_UniNa/icons/window.png +0 -0
  211. PaIRS_UniNa/icons/workspace.png +0 -0
  212. PaIRS_UniNa/icons/wrap_items.png +0 -0
  213. PaIRS_UniNa/icons/write_list.png +0 -0
  214. PaIRS_UniNa/listLib.py +303 -0
  215. PaIRS_UniNa/mtfPIV.py +8 -8
  216. PaIRS_UniNa/parForMulti.py +7 -5
  217. PaIRS_UniNa/parForWorkers.py +370 -31
  218. PaIRS_UniNa/pivParFor.py +233 -229
  219. PaIRS_UniNa/plt_util.py +141 -141
  220. PaIRS_UniNa/preProcParFor.py +153 -148
  221. PaIRS_UniNa/procTools.py +631 -178
  222. PaIRS_UniNa/readcfg.py +31 -1
  223. PaIRS_UniNa/rqrdpckgs.txt +9 -0
  224. PaIRS_UniNa/stereoPivParFor.py +227 -0
  225. PaIRS_UniNa/tAVarie.py +215 -215
  226. PaIRS_UniNa/tabSplitter.py +612 -0
  227. PaIRS_UniNa/ui_Calibration_Tab.py +545 -0
  228. PaIRS_UniNa/ui_Custom_Top.py +5 -5
  229. PaIRS_UniNa/ui_Input_Tab.py +1101 -0
  230. PaIRS_UniNa/{ui_Import_Tab_CalVi.py → ui_Input_Tab_CalVi.py} +1282 -1275
  231. PaIRS_UniNa/ui_Log_Tab.py +262 -257
  232. PaIRS_UniNa/{ui_Export_Tab.py → ui_Output_Tab.py} +2361 -1778
  233. PaIRS_UniNa/ui_Process_Tab.py +3809 -3758
  234. PaIRS_UniNa/ui_Process_Tab_CalVi.py +1547 -1546
  235. PaIRS_UniNa/ui_Process_Tab_Disp.py +1141 -0
  236. PaIRS_UniNa/ui_Process_Tab_Min.py +437 -0
  237. PaIRS_UniNa/ui_Vis_Tab.py +1626 -1208
  238. PaIRS_UniNa/ui_Vis_Tab_CalVi.py +1249 -1249
  239. PaIRS_UniNa/ui_Whatsnew.py +131 -131
  240. PaIRS_UniNa/ui_gPairs.py +876 -950
  241. PaIRS_UniNa/ui_infoPaIRS.py +550 -425
  242. PaIRS_UniNa/whatsnew.txt +6 -4
  243. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/METADATA +69 -51
  244. pairs_unina-0.2.8.dist-info/RECORD +329 -0
  245. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/WHEEL +1 -1
  246. PaIRS_UniNa/CalVi.py +0 -18
  247. PaIRS_UniNa/Export_Tab.py +0 -574
  248. PaIRS_UniNa/Import_Tab.py +0 -657
  249. PaIRS_UniNa/Import_Tab_CalVi.py +0 -861
  250. PaIRS_UniNa/Import_Tab_tools.py +0 -598
  251. PaIRS_UniNa/Tree_Tab.py +0 -543
  252. PaIRS_UniNa/gCalVi.py +0 -2024
  253. PaIRS_UniNa/icons/add.png +0 -0
  254. PaIRS_UniNa/icons/cancelled.png +0 -0
  255. PaIRS_UniNa/icons/chain.png +0 -0
  256. PaIRS_UniNa/icons/chain_broken.png +0 -0
  257. PaIRS_UniNa/icons/default_sizes.png +0 -0
  258. PaIRS_UniNa/icons/dock_tabs.png +0 -0
  259. PaIRS_UniNa/icons/done.png +0 -0
  260. PaIRS_UniNa/icons/down_arrow.png +0 -0
  261. PaIRS_UniNa/icons/export_logo.png +0 -0
  262. PaIRS_UniNa/icons/fast_delete.png +0 -0
  263. PaIRS_UniNa/icons/flip_y.png +0 -0
  264. PaIRS_UniNa/icons/ganci.png +0 -0
  265. PaIRS_UniNa/icons/import_blue.png +0 -0
  266. PaIRS_UniNa/icons/import_logo.png +0 -0
  267. PaIRS_UniNa/icons/missing.png +0 -0
  268. PaIRS_UniNa/icons/process_icon.png +0 -0
  269. PaIRS_UniNa/icons/processing.png +0 -0
  270. PaIRS_UniNa/icons/restart.png +0 -0
  271. PaIRS_UniNa/icons/right_arrow.png +0 -0
  272. PaIRS_UniNa/icons/run_piv.png +0 -0
  273. PaIRS_UniNa/icons/terminal.png +0 -0
  274. PaIRS_UniNa/icons/undock_tabs.png +0 -0
  275. PaIRS_UniNa/icons/vect_field.png +0 -0
  276. PaIRS_UniNa/icons/w0.png +0 -0
  277. PaIRS_UniNa/icons/w1.png +0 -0
  278. PaIRS_UniNa/icons/w2.png +0 -0
  279. PaIRS_UniNa/icons/w3.png +0 -0
  280. PaIRS_UniNa/icons/w4.png +0 -0
  281. PaIRS_UniNa/icons/w5.png +0 -0
  282. PaIRS_UniNa/run_CalVi.py +0 -14
  283. PaIRS_UniNa/run_gcalvi.py +0 -5
  284. PaIRS_UniNa/ui_Import_Tab.py +0 -1077
  285. PaIRS_UniNa/ui_Tree_Tab.py +0 -684
  286. PaIRS_UniNa/ui_gCalVi.py +0 -640
  287. PaIRS_UniNa/ui_infoCalVi.py +0 -428
  288. PaIRS_UniNa-0.1.13.dist-info/LICENSE +0 -19
  289. PaIRS_UniNa-0.1.13.dist-info/RECORD +0 -174
  290. /PaIRS_UniNa/icons/{clean_queue.png → clean.png} +0 -0
  291. /PaIRS_UniNa/icons/{waiting_c.png → sandglass.png} +0 -0
  292. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,120 @@
1
+ from .ui_Process_Tab_Min import*
2
+ from .TabTools import*
3
+
4
+ LaserTypeSearch_items=[ 'single laser', #0
5
+ 'double laser', #1
6
+ ]
7
+ LaserTypeSearch_order=[i for i in range(len(LaserTypeSearch_items))] #************ change here, please!
8
+
9
+ spin_tips={
10
+ 'SogliaNoise' : 'Minimum allowed value for validation',
11
+ 'SogliaStd' : 'Minimum allowed st.d. value for validation',
12
+ }
13
+ check_tips={}
14
+ radio_tips={
15
+ 'TR': 'Time-resolved sequence',
16
+ }
17
+ line_edit_tips={}
18
+ button_tips={}
19
+ combo_tips={
20
+ 'LaserType': 'Laser setup',
21
+ }
22
+
23
+ class PROpar_Min(TABpar):
24
+ def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
25
+ self.setup(Process,Step)
26
+ super().__init__('PROpar_Min','Process_Min')
27
+ self.unchecked_fields+=[]
28
+
29
+ def setup(self,Process,Step):
30
+ self.Process = Process
31
+ self.Step = Step
32
+
33
+ self.FlagTR = False
34
+ self.LaserType = 0 #0 single, 1 double
35
+ self.SogliaNoise = 5.0
36
+ self.SogliaStd = 1.5
37
+
38
+ class Process_Tab_Min(gPaIRS_Tab):
39
+ class Process_Tab_Signals(gPaIRS_Tab.Tab_Signals):
40
+ pass
41
+
42
+ def __init__(self,parent: QWidget =None, flagInit= __name__ == "__main__"):
43
+ super().__init__(parent,Ui_ProcessTab_Min,PROpar_Min)
44
+ self.signals=self.Process_Tab_Signals(self)
45
+
46
+ #------------------------------------- Graphical interface: widgets
47
+ self.TABname='Process_Min'
48
+ self.ui: Ui_ProcessTab_Min
49
+
50
+ #necessary to change the name and the order of the items
51
+ for g in list(globals()):
52
+ if '_items' in g or '_ord' in g or '_tips' in g:
53
+ #pri.Info.blue(f'Adding {g} to {self.name_tab}')
54
+ setattr(self,g,eval(g))
55
+
56
+ if __name__ == "__main__":
57
+ self.app=app
58
+ setAppGuiPalette(self)
59
+
60
+ self.pixmap_laser_NTR=QPixmap(icons_path+'laser_NTR.png')
61
+ self.pixmap_laser_TR_single=QPixmap(icons_path+'laser_TR_single.png')
62
+ self.pixmap_laser_TR_double=QPixmap(icons_path+'laser_TR_double.png')
63
+
64
+ #------------------------------------- Declaration of parameters
65
+ self.PROpar_base=PROpar_Min()
66
+ self.PROpar:PROpar_Min=self.TABpar
67
+ self.PROpar_old:PROpar_Min=self.TABpar_old
68
+
69
+ #------------------------------------- Callbacks
70
+ self.defineWidgets()
71
+ self.setupWid() #---------------- IMPORTANT
72
+
73
+ self.defineCallbacks()
74
+ self.connectCallbacks()
75
+
76
+ self.defineSettings()
77
+
78
+ self.adjustTABpar=self.adjustPROpar
79
+ self.setTABlayout=self.setPROlayout
80
+
81
+ #------------------------------------- Initializing
82
+ if flagInit:
83
+ self.initialize()
84
+
85
+
86
+ def initialize(self):
87
+ pri.Info.yellow(f'{"*"*20} PROCESS Min initialization {"*"*20}')
88
+ self.setTABpar(FlagAdjustPar=True,FlagBridge=False)
89
+ self.add_TABpar('initialization')
90
+ self.setFocus()
91
+
92
+ #*************************************************** Adjusting parameters
93
+ def adjustPROpar(self):
94
+ if not self.PROpar.FlagTR: self.PROpar.LaserType=1
95
+
96
+
97
+ #*************************************************** Layout
98
+ def setPROlayout(self):
99
+ #pri.Time.blue(1,'setPROpar: Beginning')
100
+ self.ui.w_LaserType.setEnabled(self.PROpar.FlagTR)
101
+
102
+ if not self.PROpar.FlagTR:
103
+ self.ui.example_label.setPixmap(self.pixmap_laser_NTR)
104
+ else:
105
+ if self.PROpar.LaserType==0:
106
+ self.ui.example_label.setPixmap(self.pixmap_laser_TR_single)
107
+ elif self.PROpar.LaserType==1:
108
+ self.ui.example_label.setPixmap(self.pixmap_laser_TR_double)
109
+
110
+
111
+ if __name__ == "__main__":
112
+ import sys
113
+ app=QApplication.instance()
114
+ if not app:app = QApplication(sys.argv)
115
+ app.setStyle('Fusion')
116
+ object = Process_Tab_Min(None)
117
+ object.show()
118
+ app.exec()
119
+ app.quit()
120
+ app=None
@@ -0,0 +1,296 @@
1
+ FLAG_SERIALIZED=True
2
+
3
+ import os, json, pickle, traceback
4
+ from .PaIRS_pypacks import pri
5
+
6
+ from .TabTools import TABpar
7
+ from .procTools import dataTreePar, CompMin, MediaPIV
8
+ from .Explorer import TREpar, ITEpar, currentTimeString
9
+ from .Input_Tab import INPpar
10
+ globals()['ImportPar'] = INPpar.ImportPar
11
+ from .Input_Tab_tools import ImageSet
12
+ from .Output_Tab import OUTpar
13
+ from .Process_Tab import PROpar
14
+ from .Log_Tab import LOGpar
15
+ from .Vis_Tab import VISpar, NamesPIV
16
+ globals()['OUT'] = VISpar.OUT
17
+ globals()['PRO'] = VISpar.PRO
18
+ from .Process_Tab_Min import PROpar_Min
19
+ from .Process_Tab_Disp import PROpar_Disp
20
+ from .Calibration_Tab import CALpar
21
+ from .Input_Tab_CalVi import INPpar_CalVi
22
+ from .Process_Tab_CalVi import PROpar_CalVi
23
+ from .Vis_Tab_CalVi import VISpar_CalVi
24
+ from .tabSplitter import SPLpar
25
+ from .PaIRS_pypacks import identifierName, fontPixelSize, printTypes
26
+ from .__init__ import __version__,__subversion__,__year__,__mail__,__website__
27
+
28
+ class GPApar(TABpar):
29
+ def __init__(self):
30
+ self.setup()
31
+ super().__init__(self.name,'gPaIRS')
32
+ self.unchecked_fields+=[]
33
+
34
+ def setup(self):
35
+ self.name_work, self.username, self.version = identifierName(typeObject='wksp')
36
+ self.outName = ''
37
+ self.createdDate = currentTimeString()
38
+ self.modifiedDate = self.createdDate
39
+ self.savedDate = ''
40
+ self.FlagSaved = False
41
+ self.FlagQueue = True
42
+ self.FlagRunnable = True
43
+
44
+ self.name = 'Workspace'
45
+ self.date = f'Created: {self.createdDate}'
46
+ self.icon = 'workspace.png'
47
+
48
+ self.infoFields=[f for f,_ in self.__dict__.items()]
49
+
50
+ self.Geometry = None
51
+ self.WindowState = None
52
+ self.SplitterSizes = {}
53
+ self.ScrollAreaValues = {}
54
+
55
+ #legacy
56
+ self.FloatGeometry = []
57
+ self.FloatVisible = []
58
+
59
+ self.paletteType = 2 #-1,2=standard, 0=light, 1=dark
60
+ self.fontPixelSize = fontPixelSize
61
+ self.FlagOutDated = 0
62
+ self.currentVersion = __version__
63
+ self.latestVersion = ''
64
+
65
+ self.printTypes = printTypes
66
+ self.NumCores = 0
67
+
68
+ self.stateFields=[f for f,_ in self.__dict__.items() if f not in self.infoFields]
69
+
70
+ def saveBullet(self):
71
+ return '' if self.FlagSaved else '<span style="color: #7A8B8B;"><sup>&#9679;</sup></span>'
72
+
73
+ def InfoMessage(self):
74
+ InfoMessage=f'{self.name}'
75
+ if self.FlagSaved:
76
+ InfoMessage+=f'\nFile location: {self.outName}'
77
+ else:
78
+ if self.savedDate:
79
+ InfoMessage+=' (unsaved)'
80
+ else:
81
+ InfoMessage+=' (never saved)'
82
+ InfoMessage+=f'\n\nCreated : {self.createdDate}'
83
+ InfoMessage+=f'\nModified: {self.modifiedDate}'
84
+ if self.savedDate: InfoMessage+=f'\nSaved : {self.savedDate}'
85
+ InfoMessage+=f'\n\nUser: {self.username}'
86
+ InfoMessage+=f'\nPaIRS version: {self.version}'
87
+ return InfoMessage
88
+
89
+ def save_list_to_file_serialized(l, filename, flagJSON=False):
90
+ basename = os.path.splitext(filename)[0]
91
+ pickle_data = {}
92
+ pickle_counter = 0
93
+ info_pickle =[]
94
+
95
+ def serialize_element(elem:TABpar, idx_path):
96
+ nonlocal pickle_counter
97
+ if elem is None:
98
+ return None
99
+ data = {}
100
+ for field in elem.fields:
101
+ value = getattr(elem, field)
102
+ if isinstance(value, TABpar):
103
+ data[field] = serialize_element(value, idx_path + [field])
104
+ elif isinstance(value, CompMin) or isinstance(value, MediaPIV):
105
+ data[field] = {'__file_ref__': value.outName,
106
+ 'varClass': value.__class__.__name__}
107
+ if isinstance(value, MediaPIV):
108
+ data[field]['stepType']=value.stepType
109
+ try:
110
+ if value.outName:
111
+ with open(value.outName, 'wb') as file:
112
+ pickle.dump(value, file)
113
+ except Exception as e:
114
+ print(f'Error while saving the file {filename}!\n{e}\n')
115
+ elif is_non_json_serializable(value):
116
+ info=f'Element: {elem.__class__.__name__} --> field: {field} --> value type: {type(value)}'
117
+ info_pickle.append(info)
118
+ key = f"ref_{pickle_counter}"
119
+ pickle_data[key] = value
120
+ data[field] = {'__file_ref__': key}
121
+ pickle_counter += 1
122
+ else:
123
+ data[field] = value
124
+ data['parClass'] = elem.__class__.__name__
125
+ return data
126
+
127
+ def serialize_list(lst, idx_path=[]):
128
+ if isinstance(lst, list):
129
+ return [serialize_list(item, idx_path + [i]) for i, item in enumerate(lst)]
130
+ else:
131
+ return serialize_element(lst, idx_path)
132
+
133
+ serialized_list = serialize_list(l)
134
+
135
+ try:
136
+ if flagJSON:
137
+ with open(filename, 'w') as file:
138
+ json.dump(serialized_list, file, indent=2)
139
+ else:
140
+ with open(filename, 'wb') as file:
141
+ pickle.dump(serialized_list, file)
142
+ except Exception as e:
143
+ print(f'Error while saving the file {filename}!\n{e}\n')
144
+
145
+ if pickle_counter:
146
+ pri.IOError.yellow(f'The following non-json serializable items were found in {filename}:\n'+"\n".join(info_pickle))
147
+ pickle_filename = basename+'.pairs_data'
148
+ try:
149
+ with open(pickle_filename, 'wb') as file:
150
+ pickle.dump(pickle_data, file)
151
+ except Exception as e:
152
+ print(f'Error while saving the file {pickle_filename}!\n{e}\n')
153
+
154
+
155
+ def load_list_from_file_serialized(filename):
156
+ basename = os.path.basename(filename)
157
+ pickle_filename = basename+'.pairs_data'
158
+
159
+ serialized_list=None
160
+ error=''
161
+ try:
162
+ with open(filename, 'rb') as file:
163
+ first_byte = file.read(1)
164
+ if first_byte in [b'{', b'[']:
165
+ file.seek(0)
166
+ try:
167
+ serialized_list=json.load(file)
168
+ except Exception as e:
169
+ error=e
170
+ else:
171
+ file.seek(0)
172
+ try:
173
+ import numpy
174
+ serialized_list=pickle.load(file)
175
+ except Exception as e:
176
+ error=e
177
+ except Exception as e:
178
+ error=e
179
+ if error:
180
+ pri.IOError.red(f'Error while loading the file {filename}!\n{error}\n')
181
+ return serialized_list, str(error)
182
+
183
+ error=''
184
+ pickle_data = None
185
+ if os.path.exists(pickle_filename):
186
+ try:
187
+ with open(pickle_filename, 'rb') as file:
188
+ pickle_data = pickle.load(file)
189
+ except Exception as e:
190
+ pri.IOError.red(f'Error while loading the file {pickle_filename}!\n{e}\n')
191
+ error+=str(e)
192
+
193
+ info_pickle=[]
194
+
195
+ def deserialize_element(data):
196
+ if data is None:
197
+ return None
198
+ try:
199
+ cls_name = data.pop('parClass')
200
+ except:
201
+ pass
202
+ cls = globals()[cls_name]
203
+ if cls_name=='dataTreePar':
204
+ pass
205
+ instance:TABpar = cls()
206
+ fields = {}
207
+ for key, value in data.items():
208
+ if isinstance(value, dict) and 'parClass' in value:
209
+ fields[key] = deserialize_element(value)
210
+ elif isinstance(value, dict) and 'varClass' in value:
211
+ filename = value['__file_ref__']
212
+ field_cls_name = value['varClass']
213
+ field_cls = globals()[field_cls_name]
214
+ if field_cls==MediaPIV:
215
+ new_instance:MediaPIV=field_cls(value['stepType'])
216
+ else:
217
+ new_instance:CompMin=field_cls()
218
+ if filename:
219
+ try:
220
+ if os.path.exists(filename):
221
+ with open(filename, 'rb') as file:
222
+ loaded_instance:CompMin=pickle.load(file)
223
+ for f in loaded_instance.fields:
224
+ v_loaded=getattr(loaded_instance,f)
225
+ if isinstance(v_loaded,TABpar):
226
+ v_new:TABpar=getattr(new_instance,f)
227
+ v_new.copyfrom(v_loaded)
228
+ else:
229
+ setattr(new_instance,f,v_loaded)
230
+ except Exception as e:
231
+ pri.IOError.red(f'Error while reading the file {filename} (setting "{key}" field of {cls_name} item)\n{traceback.format_exc()}\n')
232
+ fields[key] = new_instance
233
+ elif isinstance(value, dict) and '__file_ref__' in value:
234
+ ref_key = value['__file_ref__']
235
+ if pickle_data:
236
+ fields[key] = pickle_data[ref_key]
237
+ else:
238
+ fields[key] = None
239
+ info=f'Element: {cls_name} --> field: {key} --> value type: {type(value)}'
240
+ info_pickle.append(info)
241
+ None
242
+ else:
243
+ fields[key] = value
244
+ for f,v in fields.items():
245
+ if f in instance.fields: setattr(instance,f,v)
246
+ #instance.copyfromdiz(fields)
247
+ return instance
248
+
249
+ def deserialize_list(lst):
250
+ if isinstance(lst, list):
251
+ return [deserialize_list(item) for item in lst]
252
+ else:
253
+ return deserialize_element(lst)
254
+
255
+ if info_pickle:
256
+ pri.IOError.red(f'The following non-json serializable items were not found in {filename}:\n'+"\n".join(info_pickle))
257
+ l=None
258
+ try:
259
+ l=deserialize_list(serialized_list)
260
+ except Exception as e:
261
+ pri.IOError.red(f'Error while loading the file {filename}!\n{e}\n{traceback.format_exc()}\n')
262
+ error+=str(e)
263
+ return l, error
264
+
265
+ def is_non_json_serializable(value):
266
+ try:
267
+ json.dumps(value)
268
+ return False
269
+ except (TypeError, OverflowError):
270
+ return True
271
+
272
+
273
+ def save_list_to_file(l,filename):
274
+ try:
275
+ with open(filename, 'wb') as file:
276
+ pickle.dump(l, file)
277
+ except Exception as e:
278
+ print(f'Error while saving the file {filename}!\n{e}\n')
279
+
280
+ def load_list_from_file(filename):
281
+ l=None
282
+ errorMessage=''
283
+ try:
284
+ with open(filename, 'rb') as file:
285
+ l=pickle.load(file)
286
+ except Exception as e:
287
+ errorMessage=f'Error while loading the file {filename}!\n{e}\n'
288
+ pri.IOError.red(errorMessage)
289
+ return l, errorMessage
290
+
291
+ if FLAG_SERIALIZED:
292
+ saveList=save_list_to_file_serialized
293
+ loadList=load_list_from_file_serialized
294
+ else:
295
+ saveList=save_list_to_file
296
+ loadList=load_list_from_file