PaIRS-UniNa 0.2.4__cp311-cp311-win_amd64.whl → 0.2.11__cp311-cp311-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 (80) hide show
  1. PaIRS_UniNa/Calibration_Tab.py +40 -24
  2. PaIRS_UniNa/Changes.txt +98 -0
  3. PaIRS_UniNa/Custom_Top.py +1 -1
  4. PaIRS_UniNa/Explorer.py +3256 -3049
  5. PaIRS_UniNa/FolderLoop.py +561 -371
  6. PaIRS_UniNa/Input_Tab.py +824 -709
  7. PaIRS_UniNa/Input_Tab_CalVi.py +16 -17
  8. PaIRS_UniNa/Input_Tab_tools.py +3020 -3009
  9. PaIRS_UniNa/Output_Tab.py +4 -6
  10. PaIRS_UniNa/PaIRS.py +17 -17
  11. PaIRS_UniNa/PaIRS_PIV.py +56 -1
  12. PaIRS_UniNa/PaIRS_pypacks.py +486 -119
  13. PaIRS_UniNa/Process_Tab.py +25 -26
  14. PaIRS_UniNa/Process_Tab_Disp.py +17 -5
  15. PaIRS_UniNa/SPIVCalHelp.py +155 -0
  16. PaIRS_UniNa/Saving_tools.py +280 -277
  17. PaIRS_UniNa/TabTools.py +263 -29
  18. PaIRS_UniNa/Vis_Tab.py +543 -180
  19. PaIRS_UniNa/Vis_Tab_CalVi.py +139 -12
  20. PaIRS_UniNa/Whatsnew.py +17 -3
  21. PaIRS_UniNa/_PaIRS_PIV.pyd +0 -0
  22. PaIRS_UniNa/__init__.py +4 -4
  23. PaIRS_UniNa/addwidgets_ps.py +784 -100
  24. PaIRS_UniNa/calibView.py +12 -2
  25. PaIRS_UniNa/gPaIRS.py +4091 -3600
  26. PaIRS_UniNa/icons/closeAllFloat.png +0 -0
  27. PaIRS_UniNa/icons/defaultWinSize.png +0 -0
  28. PaIRS_UniNa/icons/dockVis.png +0 -0
  29. PaIRS_UniNa/icons/dockVis_disable.png +0 -0
  30. PaIRS_UniNa/icons/flaticon_PaIRS_download_warning.png +0 -0
  31. PaIRS_UniNa/icons/floatingVisSize.png +0 -0
  32. PaIRS_UniNa/icons/folder_loop_cleanup.png +0 -0
  33. PaIRS_UniNa/icons/folder_loop_cleanup_off.png +0 -0
  34. PaIRS_UniNa/icons/fullWinsize.png +0 -0
  35. PaIRS_UniNa/icons/icon_PaIRS.ico +0 -0
  36. PaIRS_UniNa/icons/information.png +0 -0
  37. PaIRS_UniNa/icons/information2.png +0 -0
  38. PaIRS_UniNa/icons/pencil_bw.png +0 -0
  39. PaIRS_UniNa/icons/pylog.png +0 -0
  40. PaIRS_UniNa/icons/python_warning.png +0 -0
  41. PaIRS_UniNa/icons/queue.png +0 -0
  42. PaIRS_UniNa/icons/scan_path_loop.png +0 -0
  43. PaIRS_UniNa/icons/scan_path_loop_off.png +0 -0
  44. PaIRS_UniNa/icons/smallWinSize.png +0 -0
  45. PaIRS_UniNa/icons/spiv_setup_no.png +0 -0
  46. PaIRS_UniNa/icons/spiv_setup_ok.png +0 -0
  47. PaIRS_UniNa/icons/undockVis.png +0 -0
  48. PaIRS_UniNa/icons/uninitialized.png +0 -0
  49. PaIRS_UniNa/icons/window.png +0 -0
  50. PaIRS_UniNa/listLib.py +301 -301
  51. PaIRS_UniNa/parForMulti.py +433 -433
  52. PaIRS_UniNa/parForWorkers.py +46 -1
  53. PaIRS_UniNa/pivParFor.py +1 -1
  54. PaIRS_UniNa/procTools.py +68 -10
  55. PaIRS_UniNa/rqrdpckgs.txt +9 -0
  56. PaIRS_UniNa/stereoPivParFor.py +1 -1
  57. PaIRS_UniNa/tabSplitter.py +611 -606
  58. PaIRS_UniNa/ui_Calibration_Tab.py +576 -543
  59. PaIRS_UniNa/ui_Custom_Top.py +294 -294
  60. PaIRS_UniNa/ui_Input_Tab.py +1098 -1098
  61. PaIRS_UniNa/ui_Input_Tab_CalVi.py +1280 -1280
  62. PaIRS_UniNa/ui_Log_Tab.py +261 -261
  63. PaIRS_UniNa/ui_Output_Tab.py +2360 -2360
  64. PaIRS_UniNa/ui_Process_Tab.py +3808 -3808
  65. PaIRS_UniNa/ui_Process_Tab_CalVi.py +1547 -1547
  66. PaIRS_UniNa/ui_Process_Tab_Disp.py +1139 -968
  67. PaIRS_UniNa/ui_Process_Tab_Min.py +435 -435
  68. PaIRS_UniNa/ui_ResizePopup.py +203 -203
  69. PaIRS_UniNa/ui_Vis_Tab.py +1626 -1533
  70. PaIRS_UniNa/ui_Vis_Tab_CalVi.py +1249 -1249
  71. PaIRS_UniNa/ui_Whatsnew.py +131 -131
  72. PaIRS_UniNa/ui_gPairs.py +915 -849
  73. PaIRS_UniNa/ui_infoPaIRS.py +550 -428
  74. PaIRS_UniNa/whatsnew.txt +3 -4
  75. {PaIRS_UniNa-0.2.4.dist-info → pairs_unina-0.2.11.dist-info}/METADATA +49 -30
  76. {PaIRS_UniNa-0.2.4.dist-info → pairs_unina-0.2.11.dist-info}/RECORD +78 -56
  77. {PaIRS_UniNa-0.2.4.dist-info → pairs_unina-0.2.11.dist-info}/WHEEL +1 -1
  78. PaIRS_UniNa/stereo.py +0 -685
  79. PaIRS_UniNa-0.2.4.dist-info/LICENSE +0 -19
  80. {PaIRS_UniNa-0.2.4.dist-info → pairs_unina-0.2.11.dist-info}/top_level.txt +0 -0
@@ -1,6 +1,7 @@
1
1
  from .ui_Calibration_Tab import*
2
2
  from .TabTools import*
3
3
  from .listLib import*
4
+ from .SPIVCalHelp import showSPIVCalHelp
4
5
 
5
6
  spin_tips={
6
7
  'ncam' : 'Number of cameras',
@@ -21,6 +22,7 @@ button_tips={
21
22
  combo_tips={}
22
23
 
23
24
  class CALpar(TABpar):
25
+ FlagSPIVCal = True
24
26
  def __init__(self,Process=ProcessTypes.null,Step=StepTypes.null):
25
27
  self.setup(Process,Step)
26
28
  super().__init__('CALpar','Calibration')
@@ -61,6 +63,8 @@ class Calibration_Tab(gPaIRS_Tab):
61
63
  self.app=app
62
64
  setAppGuiPalette(self)
63
65
 
66
+ self.ui.button_info.setStyleSheet("border: none;")
67
+ self.ui.calTree.contextMenuEvent=lambda ev: calTreeContextMenuEvent(self.ui.calTree,self,ev)
64
68
  #------------------------------------- Declaration of parameters
65
69
  self.CALpar_base=CALpar()
66
70
  self.CALpar:CALpar=self.TABpar
@@ -133,6 +137,7 @@ class Calibration_Tab(gPaIRS_Tab):
133
137
  self.ui.button_paste_below.setEnabled(FlagNCal and FlagCuttedItems)
134
138
  self.ui.button_paste_above.setEnabled(FlagNCal and FlagCuttedItems)
135
139
  self.ui.button_clean.setEnabled(FlagFiles)
140
+ self.ui.button_info.setVisible(self.CALpar.Process==ProcessTypes.spiv)
136
141
 
137
142
  self.ui.button_CalVi.setVisible(self.CALpar.flagRun==0)
138
143
 
@@ -166,13 +171,23 @@ class Calibration_Tab(gPaIRS_Tab):
166
171
  #*************************************************** Buttons
167
172
  #******************** Actions
168
173
  def button_CalVi_action(self):
174
+ if CALpar.FlagSPIVCal and self.ui.button_info.isVisible() and self.ui.button_CalVi.isChecked():
175
+ showSPIVCalHelp(self,self.dontShowAgainSPIVCalHelp)
169
176
  self.CALpar.FlagCalVi=self.ui.button_CalVi.isChecked()
170
177
 
178
+ def dontShowAgainSPIVCalHelp(self):
179
+ CALpar.FlagSPIVCal = False
180
+
181
+ def button_info_action(self):
182
+ showSPIVCalHelp(self)
183
+
171
184
  def button_scan_list_action(self):
172
185
  self.ui.calTree.setLists()
173
186
  self.CALpar.calEx=deep_duplicate(self.ui.calTree.calEx)
174
187
 
175
188
  def button_import_action(self):
189
+ if CALpar.FlagSPIVCal and self.ui.button_info.isVisible():
190
+ showSPIVCalHelp(self,self.dontShowAgainSPIVCalHelp)
176
191
  filenames, _ = QFileDialog.getOpenFileNames(self,\
177
192
  "Select calibration files from the current directory", filter='*.cal',\
178
193
  options=optionNativeDialog)
@@ -294,30 +309,31 @@ class Calibration_Tab(gPaIRS_Tab):
294
309
  self.ui.calTree.topLevelItem(self.CALpar.row).setSelected(True)
295
310
 
296
311
  #*************************************************** Context Menu
297
- def contextMenuEvent(self, event):
298
- menu=QMenu(self)
299
- name=[]
300
- act=[]
301
- fun=[]
302
- for nb in self.calibrationTreeButtons:
303
- if '-' not in nb and '|' not in nb:
304
- b:QPushButton=getattr(self.ui,'button_'+nb)
305
- if b.isVisible() and b.isEnabled():
306
- if hasattr(self,'button_'+nb+'_callback'):
307
- name.append(nb)
308
- act.append(QAction(b.icon(),toPlainText(b.toolTip().split('.')[0]),self))
309
- menu.addAction(act[-1])
310
- callback=getattr(self,'button_'+nb+'_callback')
311
- fun.append(callback)
312
- elif '|' in nb:
313
- if len(act): menu.addSeparator()
314
-
315
- if len(act):
316
- action = menu.exec(self.mapToGlobal(event.pos()))
317
- for nb,a,f in zip(name,act,fun):
318
- if a==action:
319
- TABpar.FlagSettingPar=False
320
- f()
312
+ def calTreeContextMenuEvent(obj, self, event):
313
+ menu=QMenu(obj)
314
+ menu.setStyleSheet(gPaIRS_QMenu_style)
315
+ name=[]
316
+ act=[]
317
+ fun=[]
318
+ for nb in self.calibrationTreeButtons:
319
+ if '-' not in nb and '|' not in nb:
320
+ b:QPushButton=getattr(self.ui,'button_'+nb)
321
+ if b.isVisible() and b.isEnabled():
322
+ if hasattr(self,'button_'+nb+'_callback'):
323
+ name.append(nb)
324
+ act.append(QAction(b.icon(),toPlainText(b.toolTip().split('.')[0]),self))
325
+ menu.addAction(act[-1])
326
+ callback=getattr(self,'button_'+nb+'_callback')
327
+ fun.append(callback)
328
+ elif '|' in nb:
329
+ if len(act): menu.addSeparator()
330
+
331
+ if len(act):
332
+ action = menu.exec(obj.mapToGlobal(event.pos()))
333
+ for nb,a,f in zip(name,act,fun):
334
+ if a==action:
335
+ TABpar.FlagSettingPar=False
336
+ f()
321
337
 
322
338
  if __name__ == "__main__":
323
339
  import sys
PaIRS_UniNa/Changes.txt CHANGED
@@ -1,3 +1,101 @@
1
+ ********* Changes in version 0.2.11 (2026.02.02) **********
2
+ Bug fixes:
3
+ - fixed an issue preventing correct restoration of reshape/resize settings in the Output tab at startup of the interface.
4
+
5
+ User-interface enhancements:
6
+ - minor UI restyling aimed at improving visual feedback, with clearer highlighting of widgets involved in user interactions;
7
+ - introduced the functionality to detach the Vis plot area from the main window, enabling users to visualize images and results more comfortably and effectively in a separate floating window;
8
+ - added a dedicated Window menu, allowing users to quickly apply convenient interface layouts and better manage detached windows.
9
+
10
+
11
+
12
+ ********* Changes in version 0.2.10 (2026.01.05) **********
13
+ Bug fixes:
14
+ - fixed a bug affecting the "Edit list" functionality of the image-tree in the Input tab; the feature is now fully operational and behaves as expected;
15
+ - fixed a minor issue that could affect the correct assessment of the PIV process stability.
16
+
17
+ User-interface enhancements:
18
+ - minor UI restyling aimed at improving visual feedback, with clearer highlighting of widgets involved in user interactions;
19
+ - improved the visualization of contextual help messages, providing clearer and more consistent tooltip-like feedback within the interface;
20
+ - enhanced the management and restoration of global tab settings to ensure better consistency when loading previously saved workspaces.
21
+
22
+
23
+
24
+ ********* Changes in version 0.2.9 (2025.12.12) **********
25
+ Bug fixes:
26
+ - fixed a bug in the batch folder-copy tool enabling automatic removal of incomplete image pairs and a full re-scan of destination folders to detect and resolve any image-set mismatches.
27
+
28
+ New features:
29
+ - a new help dialog has been introduced to assist users during the stereoscopic PIV calibration process. The dialog provides a detailed explanation of the required coordinate convention (plate defining the x–y plane, z-axis normal to the plate and x-axis aligned with the stereoscopic baseline) and displays example images illustrating correct and incorrect configurations.
30
+
31
+
32
+
33
+ ********* Changes in version 0.2.8 (2025.11.14) **********
34
+ Bug fixes:
35
+ - corrected a bug in the z-vorticity computation: velocity gradients were not properly converted to physical units, causing an error in the magnitude scales though not in the qualitative distributions;
36
+ - corrected the display of maps of output variables and vector fields in Vis to ensure proper alignment across option changes;
37
+ - fixed issues related to path handling in the batch-folder copy and other modules: paths are no longer relativized, avoiding inconsistent behavior across different operating systems or different.
38
+
39
+ New features:
40
+ - added new options in the batch folder-copy tool to automatically remove image pairs where one or more files are missing in the destination folders and to fully re-scan the destination folders for cases in which mismatches in the image sets may occur;
41
+ - extended the existing functionality in Vis for loading and visualizing past results located under the specified output path and name root: when available, the corresponding saved log file is now automatically loaded and displayed in the Log tab.
42
+
43
+ User-interface enhancements:
44
+ - improved the naming logic for duplicated processes: copied processes are now assigned consistent incremental suffixes;
45
+ - improved the example-image tree and the behavior of the step spin box in the Image Import Tool (minimum step is now 1);
46
+ - refined the behavior of the import button: it is now always enabled, and when no changes in the image list are detected upon importing, the user simply receives a warning message;
47
+ - improved the behaviour of the list of path completers in the Input tabs;
48
+ - in Vis, resizing settings and automatic level-reset options are no longer global but apply individually per each step.
49
+
50
+
51
+ ********* Changes in version 0.2.7 (2025.10.13) **********
52
+ Bug fixes:
53
+ - resolved an issue related to visulazion of streamlines when the image is shown in pixel units and a custom resolution is specified (in previous versions, streamlines were always represented in physical units);
54
+ - corrected the update of reprojection errors in CalVi when the control point grid is expanded after a calibration. Each new control point now has its error recalculated and plotted, providing a correct view of the extrapolation error;
55
+ - fixed the automatic resize/reshape behavior specified in the Output tab: when an image transformation is assigned, it is now preserved even if the automatic reshape button is active.
56
+
57
+ User-interface enhancements:
58
+ - changed the behavior of the Vis button for restricting view on the interrogation window area: clicking it now opens a popup menu that allows users to select the desired interrogation-window size to focus on among all iterations of the process;
59
+ - names of processes duplicated in the process tree are now automatically updated to avoid conflicts: if a name already exists, the new one is appended with an incremental suffix;
60
+ - improved interaction with editable input fields: when hovering the highlighted style is displayed correctly, the text cursor now appears exactly where clicked and the background color is properly restored when leaving the field.
61
+
62
+
63
+
64
+ ********* Changes in version 0.2.6 (2025.09.06) **********
65
+ Bug fixes:
66
+ - fixed bugs related to process tree management.
67
+
68
+ User-interface enhancements:
69
+ - enhanced release check using SSL for reliable retrieval of the latest version.
70
+
71
+ Distribution:
72
+ - ready-to-use executables of PaIRS are now available!
73
+
74
+
75
+
76
+ ********* Changes in version 0.2.5 (2025.07.28) **********
77
+ Bug fixes:
78
+ - fixed bugs in launching PIV and stereoscopic PIV processes in special cases;
79
+ - fixed tooltip crash introduced by PySide 6.9;
80
+ - corrected package import errors and context menu bugs;
81
+ - resolved multiple visual glitches in image tree selection and map visualization.
82
+
83
+ New features:
84
+ - implemented version control of required Python packages with automatic compatibility check and warning;
85
+ - disparity maps are now automatically saved in the output folder and can be visualized in Vis;
86
+ - added support for restricting view in Vis based on interrogation window size and shifting the view window interactively.
87
+
88
+ User-interface enhancements:
89
+ - redesigned the execution logic of internal workers for improved control and robustness;
90
+ - improved formatting and display of coordinates and variable values when moving the cursor during map visualization;
91
+ - updated button labels and layout for clarity and consistency.
92
+
93
+ Distribution:
94
+ - Support for Python 3.9 has been discontinued;
95
+ - Python 3.13 builds have been successfully created and tested in Windows.
96
+
97
+
98
+
1
99
  ********* Changes in version 0.2.4 (2024.12.01) **********
2
100
  Bug fixes:
3
101
  - fixed critical bugs in process handling and calibration step (CalVi usage, closing PaIRS during CalVi operation, resetting steps while running);
PaIRS_UniNa/Custom_Top.py CHANGED
@@ -224,7 +224,7 @@ class Custom_Top(QDialog):
224
224
  def loadPastProc(self,*args):
225
225
  if len(args): inpath=args[0]
226
226
  else: inpath='./'
227
- ext_pro=f'*{outExt.min}; *{outExt.piv}; *.cfg'
227
+ ext_pro=f'*{outExt.min} *{outExt.piv} *.cfg'
228
228
  filename, _ = QFileDialog.getOpenFileName(self,\
229
229
  "Select an image file of the sequence", filter=ext_pro,\
230
230
  dir=inpath,\