gratinglab 0.2.4__tar.gz → 0.2.5__tar.gz

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 (193) hide show
  1. {gratinglab-0.2.4/src/gratinglab.egg-info → gratinglab-0.2.5}/PKG-INFO +1 -1
  2. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/__init__.py +1 -1
  3. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/theming.py +10 -1
  4. gratinglab-0.2.5/src/gratinglab/metrology/gui/qt/layout.py +95 -0
  5. {gratinglab-0.2.4 → gratinglab-0.2.5/src/gratinglab.egg-info}/PKG-INFO +1 -1
  6. gratinglab-0.2.4/src/gratinglab/metrology/gui/qt/layout.py +0 -46
  7. {gratinglab-0.2.4 → gratinglab-0.2.5}/LICENSE +0 -0
  8. {gratinglab-0.2.4 → gratinglab-0.2.5}/README.md +0 -0
  9. {gratinglab-0.2.4 → gratinglab-0.2.5}/pyproject.toml +0 -0
  10. {gratinglab-0.2.4 → gratinglab-0.2.5}/setup.cfg +0 -0
  11. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/checks.py +0 -0
  12. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/compare.py +0 -0
  13. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/convergence.py +0 -0
  14. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/geometry.py +0 -0
  15. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/__init__.py +0 -0
  16. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/app.py +0 -0
  17. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/cmethod_options.py +0 -0
  18. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/diagram.py +0 -0
  19. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/diagram3d.py +0 -0
  20. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/docs.py +0 -0
  21. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/efficiency_plot.py +0 -0
  22. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/icon.py +0 -0
  23. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/integral_options.py +0 -0
  24. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/launcher.py +0 -0
  25. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/mathtext.py +0 -0
  26. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/orders.py +0 -0
  27. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/provenance.py +0 -0
  28. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/__init__.py +0 -0
  29. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/cmethod_tab.py +0 -0
  30. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/geometry_panel.py +0 -0
  31. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/geometry_tab.py +0 -0
  32. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/integral_tab.py +0 -0
  33. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/launcher.py +0 -0
  34. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/main_window.py +0 -0
  35. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/profile_plot_panel.py +0 -0
  36. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/rcwa_tab.py +0 -0
  37. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/scalar_tab.py +0 -0
  38. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/scene3d_panel.py +0 -0
  39. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/setup_tab.py +0 -0
  40. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/sizing.py +0 -0
  41. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/theory_viewer.py +0 -0
  42. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/qt/worker.py +0 -0
  43. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/rcwa_options.py +0 -0
  44. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/richtext.py +0 -0
  45. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/scalar_options.py +0 -0
  46. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/state.py +0 -0
  47. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/gui/theme.py +0 -0
  48. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/illumination.py +0 -0
  49. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/io/__init__.py +0 -0
  50. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/io/boundary.py +0 -0
  51. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/io/efficiency_table.py +0 -0
  52. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/io/ggp.py +0 -0
  53. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/materials/__init__.py +0 -0
  54. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/materials/data/SOURCES.md +0 -0
  55. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/materials/fresnel.py +0 -0
  56. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/materials/optical.py +0 -0
  57. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/materials/refractiveindex.py +0 -0
  58. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/measured.py +0 -0
  59. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/__init__.py +0 -0
  60. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/analyzer.py +0 -0
  61. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/boundary/__init__.py +0 -0
  62. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/boundary/average.py +0 -0
  63. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/boundary/pipeline.py +0 -0
  64. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/boundary/swaths.py +0 -0
  65. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/cli.py +0 -0
  66. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/config.py +0 -0
  67. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/__init__.py +0 -0
  68. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/analysis.py +0 -0
  69. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/image_flatten.py +0 -0
  70. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/orientation.py +0 -0
  71. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/processing.py +0 -0
  72. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/region_mask.py +0 -0
  73. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/scars.py +0 -0
  74. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/core/tip.py +0 -0
  75. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/data/__init__.py +0 -0
  76. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/data/aggregation.py +0 -0
  77. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/__init__.py +0 -0
  78. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/icon.py +0 -0
  79. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/__init__.py +0 -0
  80. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/app.py +0 -0
  81. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/boundary_view.py +0 -0
  82. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/canvas.py +0 -0
  83. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/efficiency_dialog.py +0 -0
  84. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/import_view.py +0 -0
  85. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/main_window.py +0 -0
  86. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/swath_dialog.py +0 -0
  87. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/wiki_view.py +0 -0
  88. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/qt/worker.py +0 -0
  89. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/gui/state.py +0 -0
  90. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/io/__init__.py +0 -0
  91. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/io/file_io.py +0 -0
  92. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/io/ibw.py +0 -0
  93. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/io/metrics.py +0 -0
  94. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/io/spm.py +0 -0
  95. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/settings.py +0 -0
  96. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/stats/__init__.py +0 -0
  97. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/stats/analysis.py +0 -0
  98. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/stats/icc.py +0 -0
  99. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/visualization/__init__.py +0 -0
  100. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/visualization/diagnostics.py +0 -0
  101. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/visualization/profiles.py +0 -0
  102. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/visualization/statistics.py +0 -0
  103. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/__init__.py +0 -0
  104. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/facet-fitting.md +0 -0
  105. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/file-formats.md +0 -0
  106. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/flattening.md +0 -0
  107. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/groove-orientation.md +0 -0
  108. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/icc-correction.md +0 -0
  109. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/overview.md +0 -0
  110. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/reading-outputs.md +0 -0
  111. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/row-groups.md +0 -0
  112. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/scars-and-masking.md +0 -0
  113. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/swath-statistics.md +0 -0
  114. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/wiki/tip-correction.md +0 -0
  115. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/metrology/workflows.py +0 -0
  116. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/problem.py +0 -0
  117. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/profiles.py +0 -0
  118. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/resolution.py +0 -0
  119. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/result.py +0 -0
  120. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/__init__.py +0 -0
  121. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/_conditioning.py +0 -0
  122. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/_execution.py +0 -0
  123. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/base.py +0 -0
  124. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/cmethod/__init__.py +0 -0
  125. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/cmethod/_core.py +0 -0
  126. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/cmethod/_series.py +0 -0
  127. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/__init__.py +0 -0
  128. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_boundary.py +0 -0
  129. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_core.py +0 -0
  130. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_finite.py +0 -0
  131. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_greens.py +0 -0
  132. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_kernels.py +0 -0
  133. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/integral/_nystrom.py +0 -0
  134. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/rcwa/__init__.py +0 -0
  135. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/rcwa/_core.py +0 -0
  136. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/rcwa/_stack.py +0 -0
  137. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab/solvers/scalar.py +0 -0
  138. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab.egg-info/SOURCES.txt +0 -0
  139. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab.egg-info/dependency_links.txt +0 -0
  140. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab.egg-info/entry_points.txt +0 -0
  141. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab.egg-info/requires.txt +0 -0
  142. {gratinglab-0.2.4 → gratinglab-0.2.5}/src/gratinglab.egg-info/top_level.txt +0 -0
  143. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_changelog.py +0 -0
  144. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_checks.py +0 -0
  145. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_cmethod.py +0 -0
  146. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_compare.py +0 -0
  147. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_conditioning.py +0 -0
  148. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_convergence.py +0 -0
  149. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_cross_method.py +0 -0
  150. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_efficiency_table.py +0 -0
  151. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_fresnel.py +0 -0
  152. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_geometry.py +0 -0
  153. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_ggp.py +0 -0
  154. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_cmethod_options.py +0 -0
  155. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_cmethod_tab.py +0 -0
  156. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_diagram.py +0 -0
  157. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_diagram3d.py +0 -0
  158. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_docs.py +0 -0
  159. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_integral_options.py +0 -0
  160. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_launcher.py +0 -0
  161. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_mathtext.py +0 -0
  162. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_orders.py +0 -0
  163. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_provenance.py +0 -0
  164. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_qt.py +0 -0
  165. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_rcwa_options.py +0 -0
  166. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_richtext.py +0 -0
  167. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_scalar_options.py +0 -0
  168. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_state.py +0 -0
  169. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_gui_theme.py +0 -0
  170. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_illumination.py +0 -0
  171. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_core.py +0 -0
  172. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_corpus.py +0 -0
  173. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_finite.py +0 -0
  174. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_graded.py +0 -0
  175. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_greens.py +0 -0
  176. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_kernels.py +0 -0
  177. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_operators.py +0 -0
  178. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_integral_solver.py +0 -0
  179. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_io_boundary.py +0 -0
  180. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_materials.py +0 -0
  181. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_measured.py +0 -0
  182. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_perturbation.py +0 -0
  183. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_profiles.py +0 -0
  184. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_rayleigh_anomaly.py +0 -0
  185. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_rcwa.py +0 -0
  186. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_rcwa_benchmarks.py +0 -0
  187. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_refractiveindex.py +0 -0
  188. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_resolution.py +0 -0
  189. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_result.py +0 -0
  190. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_scalar.py +0 -0
  191. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_solver_conformance.py +0 -0
  192. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_solver_execution.py +0 -0
  193. {gratinglab-0.2.4 → gratinglab-0.2.5}/tests/test_solver_progress.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gratinglab
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Open platform for diffraction grating groove metrology and efficiency analysis
5
5
  Author: Jake McCoy, Aditi Gangadharan
6
6
  License: BSD-3-Clause
@@ -22,7 +22,7 @@ from .measured import MeasuredEfficiency, MeasurementProvenance
22
22
  from .resolution import ResolvingPower, resolving_power
23
23
  from .result import EfficiencyScan, OrderEfficiency, Provenance
24
24
 
25
- __version__ = "0.2.4"
25
+ __version__ = "0.2.5"
26
26
 
27
27
  __all__ = [
28
28
  "Illumination",
@@ -36,6 +36,7 @@ __all__ = [
36
36
  "current",
37
37
  "install",
38
38
  "manager",
39
+ "settings",
39
40
  "subscribe",
40
41
  "swatch",
41
42
  ]
@@ -47,13 +48,21 @@ _KEY = "appearance/theme"
47
48
  _PROPERTY = "_gratinglab_theme_manager"
48
49
 
49
50
 
50
- def _settings() -> QSettings:
51
+ def settings() -> QSettings:
52
+ """The application's settings store, or the INI file ``GRATINGLAB_SETTINGS`` names.
53
+
54
+ Shared by everything the windows remember (the theme, the AFM column
55
+ width), so the test suite's redirect covers all of it at once.
56
+ """
51
57
  path = os.environ.get(SETTINGS_ENV)
52
58
  if path:
53
59
  return QSettings(path, QSettings.Format.IniFormat)
54
60
  return QSettings("gratinglab", "gratinglab")
55
61
 
56
62
 
63
+ _settings = settings
64
+
65
+
57
66
  def palette(theme: Theme) -> QPalette:
58
67
  """A ``QPalette`` for ``theme``, with disabled text dimmed to its muted colour."""
59
68
  role = QPalette.ColorRole
@@ -0,0 +1,95 @@
1
+ """
2
+ The controls-and-plot layout every AFM tab shares.
3
+
4
+ Each tab was a fixed 272 px column of controls in a 292 px scroll area beside
5
+ its plot, so long labels were crammed and nothing could be widened. A splitter
6
+ replaces that: the column starts wide enough for its contents, cannot be
7
+ dragged narrower than its widest control needs, and gives the plot every pixel
8
+ the window gains.
9
+
10
+ The width is one setting, not one per tab. Dragging the column in any tab
11
+ moves it in the others, so switching tabs never makes the plot jump, and the
12
+ width is saved as it is dragged, so the window opens at it next time. It is
13
+ kept in the same store as the theme (``theming.settings``), which the test
14
+ suite redirects to a scratch file.
15
+ """
16
+ from __future__ import annotations
17
+
18
+ import weakref
19
+
20
+ from . import * # noqa: F401,F403 - sets QT_API before matplotlib's shim loads
21
+
22
+ from PySide6.QtCore import Qt
23
+ from PySide6.QtWidgets import QFrame, QScrollArea, QSplitter, QWidget
24
+
25
+ from gratinglab.gui.qt.theming import settings
26
+
27
+ __all__ = ["controls_beside", "MIN_CONTROLS_WIDTH", "START_CONTROLS_WIDTH",
28
+ "WIDTH_KEY"]
29
+
30
+ #: Narrower than this and the group boxes' labels start to wrap mid-word.
31
+ MIN_CONTROLS_WIDTH = 260
32
+ #: Where the column starts, unless its contents ask for more.
33
+ START_CONTROLS_WIDTH = 320
34
+ #: Where the chosen width is remembered.
35
+ WIDTH_KEY = "afm/controls_width"
36
+
37
+ # Every live splitter, so a drag in one tab can move the others. Weak, so a
38
+ # closed window's splitters drop out on their own.
39
+ _SPLITTERS: "weakref.WeakSet[QSplitter]" = weakref.WeakSet()
40
+
41
+
42
+ def _saved_width() -> int | None:
43
+ value = settings().value(WIDTH_KEY)
44
+ try:
45
+ return int(value) if value is not None else None
46
+ except (TypeError, ValueError):
47
+ return None # a hand-edited or corrupt value: fall back to the default
48
+
49
+
50
+ def _follow(source: QSplitter) -> None:
51
+ """Remember ``source``'s column width and give it to every other tab."""
52
+ width = source.sizes()[0]
53
+ store = settings()
54
+ store.setValue(WIDTH_KEY, width)
55
+ store.sync()
56
+ for other in list(_SPLITTERS):
57
+ if other is source:
58
+ continue
59
+ try:
60
+ total = sum(other.sizes())
61
+ other.blockSignals(True)
62
+ other.setSizes([width, max(1, total - width)])
63
+ other.blockSignals(False)
64
+ except RuntimeError:
65
+ # Its window was closed and Qt has deleted it, while the Python
66
+ # wrapper waits for collection.
67
+ _SPLITTERS.discard(other)
68
+
69
+
70
+ def controls_beside(controls: QWidget, plot: QWidget) -> QSplitter:
71
+ """A splitter holding the scrolling ``controls`` column and the ``plot``."""
72
+ scroll = QScrollArea()
73
+ scroll.setWidget(controls)
74
+ scroll.setWidgetResizable(True)
75
+ scroll.setFrameShape(QFrame.NoFrame)
76
+ # Width is the splitter's to decide; only the height should ever scroll.
77
+ scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
78
+
79
+ gutter = scroll.verticalScrollBar().sizeHint().width()
80
+ floor = max(MIN_CONTROLS_WIDTH, controls.minimumSizeHint().width() + gutter)
81
+ scroll.setMinimumWidth(floor)
82
+
83
+ splitter = QSplitter(Qt.Horizontal)
84
+ splitter.setChildrenCollapsible(False)
85
+ splitter.addWidget(scroll)
86
+ splitter.addWidget(plot)
87
+ splitter.setStretchFactor(0, 0)
88
+ splitter.setStretchFactor(1, 1)
89
+ # A remembered width wins, but never below what this tab's controls need.
90
+ start = max(_saved_width() or START_CONTROLS_WIDTH, floor)
91
+ splitter.setSizes([start, max(1, 4 * start)])
92
+
93
+ _SPLITTERS.add(splitter)
94
+ splitter.splitterMoved.connect(lambda *_: _follow(splitter))
95
+ return splitter
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gratinglab
3
- Version: 0.2.4
3
+ Version: 0.2.5
4
4
  Summary: Open platform for diffraction grating groove metrology and efficiency analysis
5
5
  Author: Jake McCoy, Aditi Gangadharan
6
6
  License: BSD-3-Clause
@@ -1,46 +0,0 @@
1
- """
2
- The controls-and-plot layout every AFM tab shares.
3
-
4
- Each tab was a fixed 272 px column of controls in a 292 px scroll area beside
5
- its plot, so long labels were crammed and nothing could be widened. A splitter
6
- replaces that: the column starts wide enough for its contents, cannot be
7
- dragged narrower than its widest control needs, and gives the plot every pixel
8
- the window gains.
9
- """
10
- from __future__ import annotations
11
-
12
- from . import * # noqa: F401,F403 - sets QT_API before matplotlib's shim loads
13
-
14
- from PySide6.QtCore import Qt
15
- from PySide6.QtWidgets import QFrame, QScrollArea, QSplitter, QWidget
16
-
17
- __all__ = ["controls_beside", "MIN_CONTROLS_WIDTH", "START_CONTROLS_WIDTH"]
18
-
19
- #: Narrower than this and the group boxes' labels start to wrap mid-word.
20
- MIN_CONTROLS_WIDTH = 260
21
- #: Where the column starts, unless its contents ask for more.
22
- START_CONTROLS_WIDTH = 320
23
-
24
-
25
- def controls_beside(controls: QWidget, plot: QWidget) -> QSplitter:
26
- """A splitter holding the scrolling ``controls`` column and the ``plot``."""
27
- scroll = QScrollArea()
28
- scroll.setWidget(controls)
29
- scroll.setWidgetResizable(True)
30
- scroll.setFrameShape(QFrame.NoFrame)
31
- # Width is the splitter's to decide; only the height should ever scroll.
32
- scroll.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
33
-
34
- gutter = scroll.verticalScrollBar().sizeHint().width()
35
- floor = max(MIN_CONTROLS_WIDTH, controls.minimumSizeHint().width() + gutter)
36
- scroll.setMinimumWidth(floor)
37
-
38
- splitter = QSplitter(Qt.Horizontal)
39
- splitter.setChildrenCollapsible(False)
40
- splitter.addWidget(scroll)
41
- splitter.addWidget(plot)
42
- splitter.setStretchFactor(0, 0)
43
- splitter.setStretchFactor(1, 1)
44
- start = max(START_CONTROLS_WIDTH, floor)
45
- splitter.setSizes([start, max(1, 4 * start)])
46
- return splitter
File without changes
File without changes
File without changes
File without changes
File without changes