PyDMConverter 1.0.6__tar.gz → 1.0.7__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 (278) hide show
  1. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.gitignore +1 -1
  2. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PKG-INFO +3 -3
  3. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/PKG-INFO +3 -3
  4. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/SOURCES.txt +35 -1
  5. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/requires.txt +2 -2
  6. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/scm_file_list.json +194 -160
  7. pydmconverter-1.0.7/PyDMConverter.egg-info/scm_version.json +8 -0
  8. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/arguments.md +21 -0
  9. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/user_guide.md +24 -0
  10. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/environment.yml +2 -2
  11. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/__main__.py +94 -8
  12. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/custom_types.py +16 -4
  13. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/edm/converter.py +100 -6
  14. pydmconverter-1.0.7/pydmconverter/edm/converter_helpers.py +2151 -0
  15. pydmconverter-1.0.7/pydmconverter/edm/display_roots.py +104 -0
  16. pydmconverter-1.0.7/pydmconverter/edm/edm_qt.py +372 -0
  17. pydmconverter-1.0.7/pydmconverter/edm/ir_adapter.py +1869 -0
  18. pydmconverter-1.0.7/pydmconverter/edm/menu_links.py +64 -0
  19. pydmconverter-1.0.7/pydmconverter/edm/menumux.py +384 -0
  20. pydmconverter-1.0.7/pydmconverter/edm/parser.py +1297 -0
  21. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/edm/parser_helpers.py +650 -103
  22. pydmconverter-1.0.7/pydmconverter/edm/window_macros.py +84 -0
  23. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/__init__.py +1 -2
  24. pydmconverter-1.0.7/pydmconverter/ir/builder.py +471 -0
  25. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/absolute-canvas.json +3 -0
  26. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/arc.json +13 -0
  27. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/ellipse.json +12 -0
  28. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/embedded-display.json +8 -0
  29. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/frame.json +8 -0
  30. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/group-box.json +8 -0
  31. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/group.json +6 -0
  32. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/image-view.json +7 -0
  33. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/line.json +13 -0
  34. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/polygon.json +14 -0
  35. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-button.json +20 -0
  36. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-byte-led.json +12 -0
  37. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-checkbox.json +9 -0
  38. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +9 -0
  39. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-label.json +18 -0
  40. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-led.json +9 -0
  41. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-meter.json +12 -0
  42. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +10 -0
  43. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-radio-group.json +9 -0
  44. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-slider.json +11 -0
  45. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-spinbox.json +13 -0
  46. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-text-input.json +11 -0
  47. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/qwidget-container.json +5 -0
  48. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/rectangle.json +12 -0
  49. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/regular-button.json +9 -0
  50. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/related-display-button.json +11 -0
  51. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/scroll-area.json +8 -0
  52. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/shell-command-button.json +14 -0
  53. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/tabs.json +4 -0
  54. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/text-label.json +11 -0
  55. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/waveform-plot.json +10 -0
  56. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/fox.py +6 -1
  57. pydmconverter-1.0.7/pydmconverter/ir/macros.py +64 -0
  58. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/model.py +3 -2
  59. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/registry.py +13 -40
  60. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/source.py +16 -1
  61. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/transforms.py +9 -10
  62. pydmconverter-1.0.7/pydmconverter/react.py +279 -0
  63. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ui/__init__.py +1 -1
  64. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ui/ir_adapter.py +198 -20
  65. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/widgets.py +216 -95
  66. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/widgets_helpers.py +236 -113
  67. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pyproject.toml +2 -2
  68. pydmconverter-1.0.7/tests/conftest.py +10 -0
  69. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/basic_widgets.edl +1 -0
  70. pydmconverter-1.0.7/tests/edm/fixtures/channel_roles.edl +240 -0
  71. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/colors.edl +2 -1
  72. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/integration_combined.screen.json +1 -1
  73. pydmconverter-1.0.7/tests/edm/fixtures/menu_button.edl +99 -0
  74. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/pip_menu.edl +4 -3
  75. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/textdsp.edl +23 -1
  76. pydmconverter-1.0.7/tests/edm/test_alarm_severity_inputs.py +211 -0
  77. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_batch2_widget_fixes.py +7 -8
  78. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_byte_and_related.py +8 -2
  79. pydmconverter-1.0.7/tests/edm/test_calc_arguments.py +103 -0
  80. pydmconverter-1.0.7/tests/edm/test_calc_expressions_qt.py +42 -0
  81. pydmconverter-1.0.7/tests/edm/test_calc_identifiers.py +106 -0
  82. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_channel_attrs_and_alarm_rules.py +112 -6
  83. pydmconverter-1.0.7/tests/edm/test_channel_roles.py +349 -0
  84. pydmconverter-1.0.7/tests/edm/test_color_rules.py +394 -0
  85. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_colors.py +85 -5
  86. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_control_widgets.py +22 -2
  87. pydmconverter-1.0.7/tests/edm/test_converter.py +1309 -0
  88. pydmconverter-1.0.7/tests/edm/test_display_roots.py +280 -0
  89. pydmconverter-1.0.7/tests/edm/test_embedded_tabs.py +1121 -0
  90. pydmconverter-1.0.7/tests/edm/test_error_isolation.py +138 -0
  91. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_fidelity_edm_batch.py +23 -3
  92. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_graphics_widgets.py +6 -5
  93. pydmconverter-1.0.7/tests/edm/test_indexed_blocks.py +224 -0
  94. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_ir_adapter.py +58 -0
  95. pydmconverter-1.0.7/tests/edm/test_menu_button.py +273 -0
  96. pydmconverter-1.0.7/tests/edm/test_menu_links.py +200 -0
  97. pydmconverter-1.0.7/tests/edm/test_menumux.py +1160 -0
  98. pydmconverter-1.0.7/tests/edm/test_parser.py +512 -0
  99. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_parser_helpers.py +232 -11
  100. pydmconverter-1.0.7/tests/edm/test_pip_and_macro_declarations.py +382 -0
  101. pydmconverter-1.0.7/tests/edm/test_query_escaping.py +284 -0
  102. pydmconverter-1.0.7/tests/edm/test_related_display_close.py +135 -0
  103. pydmconverter-1.0.7/tests/edm/test_related_display_label.py +168 -0
  104. pydmconverter-1.0.7/tests/edm/test_rule_initial_values.py +503 -0
  105. pydmconverter-1.0.7/tests/edm/test_slider_orientation.py +142 -0
  106. pydmconverter-1.0.7/tests/edm/test_symbol_orientation.py +222 -0
  107. pydmconverter-1.0.7/tests/edm/test_symbol_robustness.py +155 -0
  108. pydmconverter-1.0.7/tests/edm/test_symbol_scaling.py +483 -0
  109. pydmconverter-1.0.7/tests/edm/test_symbol_states.py +183 -0
  110. pydmconverter-1.0.7/tests/edm/test_text_display_fidelity.py +143 -0
  111. pydmconverter-1.0.7/tests/edm/test_ui_alarm_flags.py +319 -0
  112. pydmconverter-1.0.7/tests/edm/test_ui_drawing_pen.py +214 -0
  113. pydmconverter-1.0.7/tests/edm/test_visibility_rules.py +343 -0
  114. pydmconverter-1.0.7/tests/edm/test_window_macros.py +596 -0
  115. pydmconverter-1.0.7/tests/edm/test_xy_graph_pvs.py +128 -0
  116. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_builder.py +222 -0
  117. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_fox.py +8 -0
  118. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_registry.py +42 -26
  119. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_transforms.py +5 -3
  120. pydmconverter-1.0.7/tests/test_alarm_colors_qt.py +202 -0
  121. pydmconverter-1.0.7/tests/test_drawing_pen_qt.py +337 -0
  122. pydmconverter-1.0.7/tests/test_headless_import.py +70 -0
  123. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_main.py +81 -0
  124. pydmconverter-1.0.7/tests/test_pip_stylesheet_qt.py +131 -0
  125. pydmconverter-1.0.7/tests/test_react.py +530 -0
  126. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_widgets.py +298 -0
  127. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_widgets_helpers.py +193 -16
  128. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/test_ir_adapter.py +292 -0
  129. pydmconverter-1.0.7/tests/ui/test_template_repeater.py +260 -0
  130. pydmconverter-1.0.6/PyDMConverter.egg-info/scm_version.json +0 -8
  131. pydmconverter-1.0.6/pydmconverter/edm/converter_helpers.py +0 -1390
  132. pydmconverter-1.0.6/pydmconverter/edm/edm_qt.py +0 -170
  133. pydmconverter-1.0.6/pydmconverter/edm/ir_adapter.py +0 -919
  134. pydmconverter-1.0.6/pydmconverter/edm/menumux.py +0 -102
  135. pydmconverter-1.0.6/pydmconverter/edm/parser.py +0 -730
  136. pydmconverter-1.0.6/pydmconverter/ir/builder.py +0 -260
  137. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha +0 -1
  138. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/absolute-canvas.json +0 -36
  139. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/arc.json +0 -69
  140. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/ellipse.json +0 -63
  141. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/embedded-display.json +0 -70
  142. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/frame.json +0 -52
  143. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/group-box.json +0 -44
  144. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/group.json +0 -41
  145. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/image-view.json +0 -51
  146. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/line.json +0 -78
  147. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/polygon.json +0 -83
  148. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-button.json +0 -181
  149. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-byte-led.json +0 -112
  150. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-checkbox.json +0 -55
  151. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +0 -51
  152. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-label.json +0 -94
  153. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-led.json +0 -92
  154. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-meter.json +0 -56
  155. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +0 -62
  156. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-radio-group.json +0 -58
  157. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-slider.json +0 -58
  158. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-spinbox.json +0 -60
  159. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/pv-text-input.json +0 -62
  160. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/qwidget-container.json +0 -44
  161. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/rectangle.json +0 -64
  162. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/regular-button.json +0 -67
  163. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/related-display-button.json +0 -105
  164. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/scroll-area.json +0 -52
  165. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/shell-command-button.json +0 -64
  166. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/tabs.json +0 -50
  167. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/text-label.json +0 -65
  168. pydmconverter-1.0.6/pydmconverter/ir/data/widget-registry/waveform-plot.json +0 -62
  169. pydmconverter-1.0.6/pydmconverter/ir/macros.py +0 -36
  170. pydmconverter-1.0.6/pydmconverter/react.py +0 -176
  171. pydmconverter-1.0.6/tests/edm/test_converter.py +0 -439
  172. pydmconverter-1.0.6/tests/edm/test_parser.py +0 -269
  173. pydmconverter-1.0.6/tests/edm/test_pip_and_macro_declarations.py +0 -47
  174. pydmconverter-1.0.6/tests/edm/test_symbol_states.py +0 -41
  175. pydmconverter-1.0.6/tests/edm/test_visibility_rules.py +0 -54
  176. pydmconverter-1.0.6/tests/test_headless_import.py +0 -35
  177. pydmconverter-1.0.6/tests/test_react.py +0 -72
  178. pydmconverter-1.0.6/tests/ui/test_template_repeater.py +0 -123
  179. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  180. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  181. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/workflows/gh-pages.yml +0 -0
  182. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/workflows/lint.yml +0 -0
  183. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/workflows/pypi_release.yml +0 -0
  184. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.github/workflows/tests.yml +0 -0
  185. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/.pre-commit-config.yaml +0 -0
  186. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/LICENSE +0 -0
  187. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/dependency_links.txt +0 -0
  188. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/entry_points.txt +0 -0
  189. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/PyDMConverter.egg-info/top_level.txt +0 -0
  190. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/README.md +0 -0
  191. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/file_minus.png +0 -0
  192. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/file_plus.png +0 -0
  193. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/file_x.png +0 -0
  194. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/folder_plus.png +0 -0
  195. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/folder_search.png +0 -0
  196. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/play_circle_outline.png +0 -0
  197. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/resources/settings.png +0 -0
  198. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/model/__init__.py +0 -0
  199. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/model/app_model.py +0 -0
  200. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/model/options_model.py +0 -0
  201. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/__init__.py +0 -0
  202. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/file_select_widget.py +0 -0
  203. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/main_window.py +0 -0
  204. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/main_window.ui +0 -0
  205. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/options_window.py +0 -0
  206. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/app/src/view/output_select_dialog.py +0 -0
  207. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/images/pydmconverter.png +0 -0
  208. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/index.md +0 -0
  209. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/custom_types.md +0 -0
  210. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/edm/converter.md +0 -0
  211. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/edm/converter_helpers.md +0 -0
  212. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/edm/menumux.md +0 -0
  213. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/edm/parser.md +0 -0
  214. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/edm/parser_helpers.md +0 -0
  215. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/index.md +0 -0
  216. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/pydm-converter-tool.md +0 -0
  217. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/widgets.md +0 -0
  218. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/docs/reference/widgets_helpers.md +0 -0
  219. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/examples/TEM_mapping.edl +0 -0
  220. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/examples/all_bsy0_main.edl +0 -0
  221. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/examples/all_bsy0_main_with_groups.edl +0 -0
  222. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/examples/prosilica.edl +0 -0
  223. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/mkdocs.yml +0 -0
  224. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/__init__.py +0 -0
  225. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/edm/__init__.py +0 -0
  226. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/exceptions.py +0 -0
  227. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/base.py +0 -0
  228. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/data/VENDORED_SCHEMA.md +0 -0
  229. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/data/screen-ir.schema.json +0 -0
  230. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/emit.py +0 -0
  231. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/ids.py +0 -0
  232. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/ir/schema.py +0 -0
  233. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/launch_gui.sh +0 -0
  234. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/sites/__init__.py +0 -0
  235. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/pydmconverter/sites/slac.py +0 -0
  236. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/setup.cfg +0 -0
  237. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/__init__.py +0 -0
  238. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/byte_and_related.edl +0 -0
  239. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/calc.list +0 -0
  240. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/calc_rules.edl +0 -0
  241. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/colors.list +0 -0
  242. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/exit_button.edl +0 -0
  243. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_arc.edl +0 -0
  244. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_bars.edl +0 -0
  245. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_circle.edl +0 -0
  246. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_group.edl +0 -0
  247. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_line.edl +0 -0
  248. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_rect.edl +0 -0
  249. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/indicator.edl +0 -0
  250. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/integration_combined.edl +0 -0
  251. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/meter.edl +0 -0
  252. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/misc_buttons.edl +0 -0
  253. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/mmv_multiline.edl +0 -0
  254. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/png.edl +0 -0
  255. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/radio.edl +0 -0
  256. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/shell_cmd.edl +0 -0
  257. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/symbol_states.edl +0 -0
  258. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/symbol_two_state.edl +0 -0
  259. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/unknown.edl +0 -0
  260. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/fixtures/visibility.edl +0 -0
  261. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_calc_rules_and_locals.py +0 -0
  262. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_converter_helpers.py +0 -0
  263. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/edm/test_integration_combined.py +0 -0
  264. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/__init__.py +0 -0
  265. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/conftest.py +0 -0
  266. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_emit.py +0 -0
  267. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_ids.py +0 -0
  268. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_model.py +0 -0
  269. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ir/test_ir_schema.py +0 -0
  270. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_options_model.py +0 -0
  271. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_sites.py +0 -0
  272. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/test_ui_rules.py +0 -0
  273. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/__init__.py +0 -0
  274. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/fixtures/basic_widgets.ui +0 -0
  275. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/fixtures/byte_and_related.ui +0 -0
  276. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/fixtures/newly_supported.ui +0 -0
  277. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/test_byte_and_related.py +0 -0
  278. {pydmconverter-1.0.6 → pydmconverter-1.0.7}/tests/ui/test_unmapped_classes.py +0 -0
@@ -120,7 +120,7 @@ ENV/
120
120
 
121
121
  *.json
122
122
 
123
- # Canopy IR data files (generated schema + vendored widget registry) are tracked assets
123
+ # Canopy IR data files (vendored IR schema + widget registry) are tracked assets
124
124
  !pydmconverter/ir/data/*.json
125
125
  !pydmconverter/ir/data/widget-registry/*.json
126
126
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyDMConverter
3
- Version: 1.0.6
3
+ Version: 1.0.7
4
4
  Summary: converter to generate pydm .ui files from other display managers.
5
5
  Author: Devan Agrawal, Zach Domke, Ryan McClanahan, Alexander Ng, Logan Somoza, Alexandria Ikuma
6
6
  Author-email: Yekta Yazar <yazar@slac.stanford.edu>
@@ -695,14 +695,14 @@ License-File: LICENSE
695
695
  Requires-Dist: pydantic>=2
696
696
  Requires-Dist: jsonschema>=4
697
697
  Provides-Extra: gui
698
- Requires-Dist: pydm; extra == "gui"
698
+ Requires-Dist: pydm>=1.29; extra == "gui"
699
699
  Requires-Dist: pyqt5; extra == "gui"
700
700
  Provides-Extra: dev
701
701
  Requires-Dist: pytest; extra == "dev"
702
702
  Requires-Dist: pytest-cov; extra == "dev"
703
703
  Requires-Dist: pytest-qt; extra == "dev"
704
704
  Requires-Dist: pytest-mock; extra == "dev"
705
- Requires-Dist: pydm; extra == "dev"
705
+ Requires-Dist: pydm>=1.29; extra == "dev"
706
706
  Requires-Dist: pyqt5; extra == "dev"
707
707
  Dynamic: license-file
708
708
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyDMConverter
3
- Version: 1.0.6
3
+ Version: 1.0.7
4
4
  Summary: converter to generate pydm .ui files from other display managers.
5
5
  Author: Devan Agrawal, Zach Domke, Ryan McClanahan, Alexander Ng, Logan Somoza, Alexandria Ikuma
6
6
  Author-email: Yekta Yazar <yazar@slac.stanford.edu>
@@ -695,14 +695,14 @@ License-File: LICENSE
695
695
  Requires-Dist: pydantic>=2
696
696
  Requires-Dist: jsonschema>=4
697
697
  Provides-Extra: gui
698
- Requires-Dist: pydm; extra == "gui"
698
+ Requires-Dist: pydm>=1.29; extra == "gui"
699
699
  Requires-Dist: pyqt5; extra == "gui"
700
700
  Provides-Extra: dev
701
701
  Requires-Dist: pytest; extra == "dev"
702
702
  Requires-Dist: pytest-cov; extra == "dev"
703
703
  Requires-Dist: pytest-qt; extra == "dev"
704
704
  Requires-Dist: pytest-mock; extra == "dev"
705
- Requires-Dist: pydm; extra == "dev"
705
+ Requires-Dist: pydm>=1.29; extra == "dev"
706
706
  Requires-Dist: pyqt5; extra == "dev"
707
707
  Dynamic: license-file
708
708
 
@@ -64,11 +64,14 @@ pydmconverter/widgets_helpers.py
64
64
  pydmconverter/edm/__init__.py
65
65
  pydmconverter/edm/converter.py
66
66
  pydmconverter/edm/converter_helpers.py
67
+ pydmconverter/edm/display_roots.py
67
68
  pydmconverter/edm/edm_qt.py
68
69
  pydmconverter/edm/ir_adapter.py
70
+ pydmconverter/edm/menu_links.py
69
71
  pydmconverter/edm/menumux.py
70
72
  pydmconverter/edm/parser.py
71
73
  pydmconverter/edm/parser_helpers.py
74
+ pydmconverter/edm/window_macros.py
72
75
  pydmconverter/ir/__init__.py
73
76
  pydmconverter/ir/base.py
74
77
  pydmconverter/ir/builder.py
@@ -83,7 +86,6 @@ pydmconverter/ir/source.py
83
86
  pydmconverter/ir/transforms.py
84
87
  pydmconverter/ir/data/VENDORED_SCHEMA.md
85
88
  pydmconverter/ir/data/screen-ir.schema.json
86
- pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha
87
89
  pydmconverter/ir/data/widget-registry/absolute-canvas.json
88
90
  pydmconverter/ir/data/widget-registry/arc.json
89
91
  pydmconverter/ir/data/widget-registry/ellipse.json
@@ -120,35 +122,66 @@ pydmconverter/sites/slac.py
120
122
  pydmconverter/ui/__init__.py
121
123
  pydmconverter/ui/ir_adapter.py
122
124
  tests/__init__.py
125
+ tests/conftest.py
126
+ tests/test_alarm_colors_qt.py
127
+ tests/test_drawing_pen_qt.py
123
128
  tests/test_headless_import.py
124
129
  tests/test_main.py
125
130
  tests/test_options_model.py
131
+ tests/test_pip_stylesheet_qt.py
126
132
  tests/test_react.py
127
133
  tests/test_sites.py
128
134
  tests/test_ui_rules.py
129
135
  tests/test_widgets.py
130
136
  tests/test_widgets_helpers.py
137
+ tests/edm/test_alarm_severity_inputs.py
131
138
  tests/edm/test_batch2_widget_fixes.py
132
139
  tests/edm/test_byte_and_related.py
140
+ tests/edm/test_calc_arguments.py
141
+ tests/edm/test_calc_expressions_qt.py
142
+ tests/edm/test_calc_identifiers.py
133
143
  tests/edm/test_calc_rules_and_locals.py
134
144
  tests/edm/test_channel_attrs_and_alarm_rules.py
145
+ tests/edm/test_channel_roles.py
146
+ tests/edm/test_color_rules.py
135
147
  tests/edm/test_colors.py
136
148
  tests/edm/test_control_widgets.py
137
149
  tests/edm/test_converter.py
138
150
  tests/edm/test_converter_helpers.py
151
+ tests/edm/test_display_roots.py
152
+ tests/edm/test_embedded_tabs.py
153
+ tests/edm/test_error_isolation.py
139
154
  tests/edm/test_fidelity_edm_batch.py
140
155
  tests/edm/test_graphics_widgets.py
156
+ tests/edm/test_indexed_blocks.py
141
157
  tests/edm/test_integration_combined.py
142
158
  tests/edm/test_ir_adapter.py
159
+ tests/edm/test_menu_button.py
160
+ tests/edm/test_menu_links.py
161
+ tests/edm/test_menumux.py
143
162
  tests/edm/test_parser.py
144
163
  tests/edm/test_parser_helpers.py
145
164
  tests/edm/test_pip_and_macro_declarations.py
165
+ tests/edm/test_query_escaping.py
166
+ tests/edm/test_related_display_close.py
167
+ tests/edm/test_related_display_label.py
168
+ tests/edm/test_rule_initial_values.py
169
+ tests/edm/test_slider_orientation.py
170
+ tests/edm/test_symbol_orientation.py
171
+ tests/edm/test_symbol_robustness.py
172
+ tests/edm/test_symbol_scaling.py
146
173
  tests/edm/test_symbol_states.py
174
+ tests/edm/test_text_display_fidelity.py
175
+ tests/edm/test_ui_alarm_flags.py
176
+ tests/edm/test_ui_drawing_pen.py
147
177
  tests/edm/test_visibility_rules.py
178
+ tests/edm/test_window_macros.py
179
+ tests/edm/test_xy_graph_pvs.py
148
180
  tests/edm/fixtures/basic_widgets.edl
149
181
  tests/edm/fixtures/byte_and_related.edl
150
182
  tests/edm/fixtures/calc.list
151
183
  tests/edm/fixtures/calc_rules.edl
184
+ tests/edm/fixtures/channel_roles.edl
152
185
  tests/edm/fixtures/colors.edl
153
186
  tests/edm/fixtures/colors.list
154
187
  tests/edm/fixtures/exit_button.edl
@@ -161,6 +194,7 @@ tests/edm/fixtures/graphics_rect.edl
161
194
  tests/edm/fixtures/indicator.edl
162
195
  tests/edm/fixtures/integration_combined.edl
163
196
  tests/edm/fixtures/integration_combined.screen.json
197
+ tests/edm/fixtures/menu_button.edl
164
198
  tests/edm/fixtures/meter.edl
165
199
  tests/edm/fixtures/misc_buttons.edl
166
200
  tests/edm/fixtures/mmv_multiline.edl
@@ -6,9 +6,9 @@ pytest
6
6
  pytest-cov
7
7
  pytest-qt
8
8
  pytest-mock
9
- pydm
9
+ pydm>=1.29
10
10
  pyqt5
11
11
 
12
12
  [gui]
13
- pydm
13
+ pydm>=1.29
14
14
  pyqt5
@@ -1,189 +1,223 @@
1
1
  {
2
2
  "files": [
3
- "mkdocs.yml",
4
- ".pre-commit-config.yaml",
5
- "pyproject.toml",
6
- "environment.yml",
7
- "LICENSE",
8
- "README.md",
9
- ".gitignore",
10
3
  ".github/ISSUE_TEMPLATE/bug-report.yml",
11
4
  ".github/ISSUE_TEMPLATE/feature-request.yml",
12
- ".github/workflows/pypi_release.yml",
13
- ".github/workflows/lint.yml",
14
5
  ".github/workflows/gh-pages.yml",
6
+ ".github/workflows/lint.yml",
7
+ ".github/workflows/pypi_release.yml",
15
8
  ".github/workflows/tests.yml",
9
+ ".gitignore",
10
+ ".pre-commit-config.yaml",
11
+ "LICENSE",
12
+ "README.md",
13
+ "app/resources/file_minus.png",
14
+ "app/resources/file_plus.png",
15
+ "app/resources/file_x.png",
16
+ "app/resources/folder_plus.png",
17
+ "app/resources/folder_search.png",
18
+ "app/resources/play_circle_outline.png",
19
+ "app/resources/settings.png",
20
+ "app/src/model/__init__.py",
21
+ "app/src/model/app_model.py",
22
+ "app/src/model/options_model.py",
23
+ "app/src/view/__init__.py",
24
+ "app/src/view/file_select_widget.py",
25
+ "app/src/view/main_window.py",
26
+ "app/src/view/main_window.ui",
27
+ "app/src/view/options_window.py",
28
+ "app/src/view/output_select_dialog.py",
29
+ "docs/arguments.md",
30
+ "docs/images/pydmconverter.png",
31
+ "docs/index.md",
32
+ "docs/reference/custom_types.md",
33
+ "docs/reference/edm/converter.md",
34
+ "docs/reference/edm/converter_helpers.md",
35
+ "docs/reference/edm/menumux.md",
36
+ "docs/reference/edm/parser.md",
37
+ "docs/reference/edm/parser_helpers.md",
38
+ "docs/reference/index.md",
39
+ "docs/reference/pydm-converter-tool.md",
40
+ "docs/reference/widgets.md",
41
+ "docs/reference/widgets_helpers.md",
42
+ "docs/user_guide.md",
43
+ "environment.yml",
44
+ "examples/TEM_mapping.edl",
16
45
  "examples/all_bsy0_main.edl",
17
- "examples/prosilica.edl",
18
46
  "examples/all_bsy0_main_with_groups.edl",
19
- "examples/TEM_mapping.edl",
20
- "tests/test_headless_import.py",
21
- "tests/test_react.py",
22
- "tests/test_widgets_helpers.py",
23
- "tests/test_widgets.py",
24
- "tests/__init__.py",
25
- "tests/test_options_model.py",
26
- "tests/test_sites.py",
27
- "tests/test_main.py",
28
- "tests/test_ui_rules.py",
29
- "tests/edm/test_channel_attrs_and_alarm_rules.py",
30
- "tests/edm/test_graphics_widgets.py",
31
- "tests/edm/test_control_widgets.py",
32
- "tests/edm/test_symbol_states.py",
33
- "tests/edm/test_parser_helpers.py",
34
- "tests/edm/test_integration_combined.py",
35
- "tests/edm/test_visibility_rules.py",
36
- "tests/edm/test_colors.py",
37
- "tests/edm/test_fidelity_edm_batch.py",
38
- "tests/edm/test_byte_and_related.py",
39
- "tests/edm/test_pip_and_macro_declarations.py",
40
- "tests/edm/test_calc_rules_and_locals.py",
41
- "tests/edm/test_parser.py",
42
- "tests/edm/test_converter_helpers.py",
43
- "tests/edm/test_batch2_widget_fixes.py",
44
- "tests/edm/test_converter.py",
45
- "tests/edm/test_ir_adapter.py",
46
- "tests/edm/fixtures/byte_and_related.edl",
47
- "tests/edm/fixtures/graphics_arc.edl",
48
- "tests/edm/fixtures/unknown.edl",
49
- "tests/edm/fixtures/pip_menu.edl",
50
- "tests/edm/fixtures/png.edl",
51
- "tests/edm/fixtures/visibility.edl",
52
- "tests/edm/fixtures/calc_rules.edl",
53
- "tests/edm/fixtures/exit_button.edl",
54
- "tests/edm/fixtures/graphics_line.edl",
55
- "tests/edm/fixtures/meter.edl",
56
- "tests/edm/fixtures/integration_combined.edl",
57
- "tests/edm/fixtures/radio.edl",
58
- "tests/edm/fixtures/colors.edl",
59
- "tests/edm/fixtures/calc.list",
60
- "tests/edm/fixtures/symbol_two_state.edl",
61
- "tests/edm/fixtures/symbol_states.edl",
62
- "tests/edm/fixtures/graphics_bars.edl",
63
- "tests/edm/fixtures/misc_buttons.edl",
64
- "tests/edm/fixtures/textdsp.edl",
65
- "tests/edm/fixtures/indicator.edl",
66
- "tests/edm/fixtures/shell_cmd.edl",
67
- "tests/edm/fixtures/graphics_circle.edl",
68
- "tests/edm/fixtures/colors.list",
69
- "tests/edm/fixtures/mmv_multiline.edl",
70
- "tests/edm/fixtures/basic_widgets.edl",
71
- "tests/edm/fixtures/integration_combined.screen.json",
72
- "tests/edm/fixtures/graphics_group.edl",
73
- "tests/edm/fixtures/graphics_rect.edl",
74
- "tests/ui/test_template_repeater.py",
75
- "tests/ui/test_unmapped_classes.py",
76
- "tests/ui/__init__.py",
77
- "tests/ui/test_byte_and_related.py",
78
- "tests/ui/test_ir_adapter.py",
79
- "tests/ui/fixtures/basic_widgets.ui",
80
- "tests/ui/fixtures/byte_and_related.ui",
81
- "tests/ui/fixtures/newly_supported.ui",
82
- "tests/ir/test_ir_schema.py",
83
- "tests/ir/test_ir_registry.py",
84
- "tests/ir/test_ir_fox.py",
85
- "tests/ir/test_ir_ids.py",
86
- "tests/ir/test_ir_builder.py",
87
- "tests/ir/__init__.py",
88
- "tests/ir/test_ir_transforms.py",
89
- "tests/ir/test_ir_model.py",
90
- "tests/ir/conftest.py",
91
- "tests/ir/test_ir_emit.py",
92
- "pydmconverter/widgets.py",
93
- "pydmconverter/react.py",
47
+ "examples/prosilica.edl",
48
+ "mkdocs.yml",
94
49
  "pydmconverter/__init__.py",
95
- "pydmconverter/launch_gui.sh",
96
- "pydmconverter/exceptions.py",
97
50
  "pydmconverter/__main__.py",
98
- "pydmconverter/widgets_helpers.py",
99
51
  "pydmconverter/custom_types.py",
100
- "pydmconverter/edm/menumux.py",
101
- "pydmconverter/edm/parser.py",
52
+ "pydmconverter/edm/__init__.py",
53
+ "pydmconverter/edm/converter.py",
102
54
  "pydmconverter/edm/converter_helpers.py",
103
- "pydmconverter/edm/ir_adapter.py",
55
+ "pydmconverter/edm/display_roots.py",
104
56
  "pydmconverter/edm/edm_qt.py",
105
- "pydmconverter/edm/__init__.py",
57
+ "pydmconverter/edm/ir_adapter.py",
58
+ "pydmconverter/edm/menu_links.py",
59
+ "pydmconverter/edm/menumux.py",
60
+ "pydmconverter/edm/parser.py",
106
61
  "pydmconverter/edm/parser_helpers.py",
107
- "pydmconverter/edm/converter.py",
108
- "pydmconverter/ui/ir_adapter.py",
109
- "pydmconverter/ui/__init__.py",
110
- "pydmconverter/sites/__init__.py",
111
- "pydmconverter/sites/slac.py",
112
- "pydmconverter/ir/schema.py",
113
- "pydmconverter/ir/macros.py",
114
- "pydmconverter/ir/builder.py",
115
- "pydmconverter/ir/transforms.py",
116
- "pydmconverter/ir/fox.py",
117
- "pydmconverter/ir/ids.py",
62
+ "pydmconverter/edm/window_macros.py",
63
+ "pydmconverter/exceptions.py",
118
64
  "pydmconverter/ir/__init__.py",
119
- "pydmconverter/ir/registry.py",
120
- "pydmconverter/ir/source.py",
121
- "pydmconverter/ir/model.py",
122
65
  "pydmconverter/ir/base.py",
123
- "pydmconverter/ir/emit.py",
66
+ "pydmconverter/ir/builder.py",
124
67
  "pydmconverter/ir/data/VENDORED_SCHEMA.md",
125
68
  "pydmconverter/ir/data/screen-ir.schema.json",
126
- "pydmconverter/ir/data/widget-registry/line.json",
69
+ "pydmconverter/ir/data/widget-registry/absolute-canvas.json",
127
70
  "pydmconverter/ir/data/widget-registry/arc.json",
128
- "pydmconverter/ir/data/widget-registry/pv-button.json",
129
- "pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
130
- "pydmconverter/ir/data/widget-registry/waveform-plot.json",
131
- "pydmconverter/ir/data/widget-registry/pv-progress-bar.json",
132
- "pydmconverter/ir/data/widget-registry/text-label.json",
133
- "pydmconverter/ir/data/widget-registry/shell-command-button.json",
134
- "pydmconverter/ir/data/widget-registry/pv-meter.json",
135
- "pydmconverter/ir/data/widget-registry/pv-led.json",
71
+ "pydmconverter/ir/data/widget-registry/ellipse.json",
72
+ "pydmconverter/ir/data/widget-registry/embedded-display.json",
73
+ "pydmconverter/ir/data/widget-registry/frame.json",
136
74
  "pydmconverter/ir/data/widget-registry/group-box.json",
137
- "pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha",
138
- "pydmconverter/ir/data/widget-registry/pv-slider.json",
139
- "pydmconverter/ir/data/widget-registry/pv-byte-led.json",
140
- "pydmconverter/ir/data/widget-registry/absolute-canvas.json",
141
75
  "pydmconverter/ir/data/widget-registry/group.json",
142
76
  "pydmconverter/ir/data/widget-registry/image-view.json",
77
+ "pydmconverter/ir/data/widget-registry/line.json",
78
+ "pydmconverter/ir/data/widget-registry/polygon.json",
79
+ "pydmconverter/ir/data/widget-registry/pv-button.json",
80
+ "pydmconverter/ir/data/widget-registry/pv-byte-led.json",
143
81
  "pydmconverter/ir/data/widget-registry/pv-checkbox.json",
144
- "pydmconverter/ir/data/widget-registry/rectangle.json",
145
- "pydmconverter/ir/data/widget-registry/related-display-button.json",
146
- "pydmconverter/ir/data/widget-registry/qwidget-container.json",
147
- "pydmconverter/ir/data/widget-registry/ellipse.json",
148
- "pydmconverter/ir/data/widget-registry/pv-text-input.json",
149
- "pydmconverter/ir/data/widget-registry/pv-spinbox.json",
82
+ "pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
150
83
  "pydmconverter/ir/data/widget-registry/pv-label.json",
151
- "pydmconverter/ir/data/widget-registry/frame.json",
84
+ "pydmconverter/ir/data/widget-registry/pv-led.json",
85
+ "pydmconverter/ir/data/widget-registry/pv-meter.json",
86
+ "pydmconverter/ir/data/widget-registry/pv-progress-bar.json",
152
87
  "pydmconverter/ir/data/widget-registry/pv-radio-group.json",
153
- "pydmconverter/ir/data/widget-registry/polygon.json",
154
- "pydmconverter/ir/data/widget-registry/scroll-area.json",
88
+ "pydmconverter/ir/data/widget-registry/pv-slider.json",
89
+ "pydmconverter/ir/data/widget-registry/pv-spinbox.json",
90
+ "pydmconverter/ir/data/widget-registry/pv-text-input.json",
91
+ "pydmconverter/ir/data/widget-registry/qwidget-container.json",
92
+ "pydmconverter/ir/data/widget-registry/rectangle.json",
155
93
  "pydmconverter/ir/data/widget-registry/regular-button.json",
156
- "pydmconverter/ir/data/widget-registry/embedded-display.json",
94
+ "pydmconverter/ir/data/widget-registry/related-display-button.json",
95
+ "pydmconverter/ir/data/widget-registry/scroll-area.json",
96
+ "pydmconverter/ir/data/widget-registry/shell-command-button.json",
157
97
  "pydmconverter/ir/data/widget-registry/tabs.json",
158
- "app/resources/file_plus.png",
159
- "app/resources/play_circle_outline.png",
160
- "app/resources/file_minus.png",
161
- "app/resources/settings.png",
162
- "app/resources/file_x.png",
163
- "app/resources/folder_plus.png",
164
- "app/resources/folder_search.png",
165
- "app/src/model/app_model.py",
166
- "app/src/model/options_model.py",
167
- "app/src/model/__init__.py",
168
- "app/src/view/main_window.ui",
169
- "app/src/view/output_select_dialog.py",
170
- "app/src/view/options_window.py",
171
- "app/src/view/__init__.py",
172
- "app/src/view/main_window.py",
173
- "app/src/view/file_select_widget.py",
174
- "docs/user_guide.md",
175
- "docs/arguments.md",
176
- "docs/index.md",
177
- "docs/images/pydmconverter.png",
178
- "docs/reference/widgets_helpers.md",
179
- "docs/reference/custom_types.md",
180
- "docs/reference/widgets.md",
181
- "docs/reference/pydm-converter-tool.md",
182
- "docs/reference/index.md",
183
- "docs/reference/edm/parser.md",
184
- "docs/reference/edm/converter_helpers.md",
185
- "docs/reference/edm/parser_helpers.md",
186
- "docs/reference/edm/menumux.md",
187
- "docs/reference/edm/converter.md"
98
+ "pydmconverter/ir/data/widget-registry/text-label.json",
99
+ "pydmconverter/ir/data/widget-registry/waveform-plot.json",
100
+ "pydmconverter/ir/emit.py",
101
+ "pydmconverter/ir/fox.py",
102
+ "pydmconverter/ir/ids.py",
103
+ "pydmconverter/ir/macros.py",
104
+ "pydmconverter/ir/model.py",
105
+ "pydmconverter/ir/registry.py",
106
+ "pydmconverter/ir/schema.py",
107
+ "pydmconverter/ir/source.py",
108
+ "pydmconverter/ir/transforms.py",
109
+ "pydmconverter/launch_gui.sh",
110
+ "pydmconverter/react.py",
111
+ "pydmconverter/sites/__init__.py",
112
+ "pydmconverter/sites/slac.py",
113
+ "pydmconverter/ui/__init__.py",
114
+ "pydmconverter/ui/ir_adapter.py",
115
+ "pydmconverter/widgets.py",
116
+ "pydmconverter/widgets_helpers.py",
117
+ "pyproject.toml",
118
+ "tests/__init__.py",
119
+ "tests/conftest.py",
120
+ "tests/edm/fixtures/basic_widgets.edl",
121
+ "tests/edm/fixtures/byte_and_related.edl",
122
+ "tests/edm/fixtures/calc.list",
123
+ "tests/edm/fixtures/calc_rules.edl",
124
+ "tests/edm/fixtures/channel_roles.edl",
125
+ "tests/edm/fixtures/colors.edl",
126
+ "tests/edm/fixtures/colors.list",
127
+ "tests/edm/fixtures/exit_button.edl",
128
+ "tests/edm/fixtures/graphics_arc.edl",
129
+ "tests/edm/fixtures/graphics_bars.edl",
130
+ "tests/edm/fixtures/graphics_circle.edl",
131
+ "tests/edm/fixtures/graphics_group.edl",
132
+ "tests/edm/fixtures/graphics_line.edl",
133
+ "tests/edm/fixtures/graphics_rect.edl",
134
+ "tests/edm/fixtures/indicator.edl",
135
+ "tests/edm/fixtures/integration_combined.edl",
136
+ "tests/edm/fixtures/integration_combined.screen.json",
137
+ "tests/edm/fixtures/menu_button.edl",
138
+ "tests/edm/fixtures/meter.edl",
139
+ "tests/edm/fixtures/misc_buttons.edl",
140
+ "tests/edm/fixtures/mmv_multiline.edl",
141
+ "tests/edm/fixtures/pip_menu.edl",
142
+ "tests/edm/fixtures/png.edl",
143
+ "tests/edm/fixtures/radio.edl",
144
+ "tests/edm/fixtures/shell_cmd.edl",
145
+ "tests/edm/fixtures/symbol_states.edl",
146
+ "tests/edm/fixtures/symbol_two_state.edl",
147
+ "tests/edm/fixtures/textdsp.edl",
148
+ "tests/edm/fixtures/unknown.edl",
149
+ "tests/edm/fixtures/visibility.edl",
150
+ "tests/edm/test_alarm_severity_inputs.py",
151
+ "tests/edm/test_batch2_widget_fixes.py",
152
+ "tests/edm/test_byte_and_related.py",
153
+ "tests/edm/test_calc_arguments.py",
154
+ "tests/edm/test_calc_expressions_qt.py",
155
+ "tests/edm/test_calc_identifiers.py",
156
+ "tests/edm/test_calc_rules_and_locals.py",
157
+ "tests/edm/test_channel_attrs_and_alarm_rules.py",
158
+ "tests/edm/test_channel_roles.py",
159
+ "tests/edm/test_color_rules.py",
160
+ "tests/edm/test_colors.py",
161
+ "tests/edm/test_control_widgets.py",
162
+ "tests/edm/test_converter.py",
163
+ "tests/edm/test_converter_helpers.py",
164
+ "tests/edm/test_display_roots.py",
165
+ "tests/edm/test_embedded_tabs.py",
166
+ "tests/edm/test_error_isolation.py",
167
+ "tests/edm/test_fidelity_edm_batch.py",
168
+ "tests/edm/test_graphics_widgets.py",
169
+ "tests/edm/test_indexed_blocks.py",
170
+ "tests/edm/test_integration_combined.py",
171
+ "tests/edm/test_ir_adapter.py",
172
+ "tests/edm/test_menu_button.py",
173
+ "tests/edm/test_menu_links.py",
174
+ "tests/edm/test_menumux.py",
175
+ "tests/edm/test_parser.py",
176
+ "tests/edm/test_parser_helpers.py",
177
+ "tests/edm/test_pip_and_macro_declarations.py",
178
+ "tests/edm/test_query_escaping.py",
179
+ "tests/edm/test_related_display_close.py",
180
+ "tests/edm/test_related_display_label.py",
181
+ "tests/edm/test_rule_initial_values.py",
182
+ "tests/edm/test_slider_orientation.py",
183
+ "tests/edm/test_symbol_orientation.py",
184
+ "tests/edm/test_symbol_robustness.py",
185
+ "tests/edm/test_symbol_scaling.py",
186
+ "tests/edm/test_symbol_states.py",
187
+ "tests/edm/test_text_display_fidelity.py",
188
+ "tests/edm/test_ui_alarm_flags.py",
189
+ "tests/edm/test_ui_drawing_pen.py",
190
+ "tests/edm/test_visibility_rules.py",
191
+ "tests/edm/test_window_macros.py",
192
+ "tests/edm/test_xy_graph_pvs.py",
193
+ "tests/ir/__init__.py",
194
+ "tests/ir/conftest.py",
195
+ "tests/ir/test_ir_builder.py",
196
+ "tests/ir/test_ir_emit.py",
197
+ "tests/ir/test_ir_fox.py",
198
+ "tests/ir/test_ir_ids.py",
199
+ "tests/ir/test_ir_model.py",
200
+ "tests/ir/test_ir_registry.py",
201
+ "tests/ir/test_ir_schema.py",
202
+ "tests/ir/test_ir_transforms.py",
203
+ "tests/test_alarm_colors_qt.py",
204
+ "tests/test_drawing_pen_qt.py",
205
+ "tests/test_headless_import.py",
206
+ "tests/test_main.py",
207
+ "tests/test_options_model.py",
208
+ "tests/test_pip_stylesheet_qt.py",
209
+ "tests/test_react.py",
210
+ "tests/test_sites.py",
211
+ "tests/test_ui_rules.py",
212
+ "tests/test_widgets.py",
213
+ "tests/test_widgets_helpers.py",
214
+ "tests/ui/__init__.py",
215
+ "tests/ui/fixtures/basic_widgets.ui",
216
+ "tests/ui/fixtures/byte_and_related.ui",
217
+ "tests/ui/fixtures/newly_supported.ui",
218
+ "tests/ui/test_byte_and_related.py",
219
+ "tests/ui/test_ir_adapter.py",
220
+ "tests/ui/test_template_repeater.py",
221
+ "tests/ui/test_unmapped_classes.py"
188
222
  ]
189
223
  }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.0.7",
3
+ "distance": 0,
4
+ "node": "gd330a7401a20e25e5903373a57479f3df5f3e941",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-15"
8
+ }
@@ -35,6 +35,27 @@ pydmconverter /path/to/file.edl output.ui --site slac
35
35
  **Adding a new site:**
36
36
  To add conversion rules for a new site, create a new module in `pydmconverter/sites/` (e.g. `mysite.py`) that defines a `SKIP_WIDGETS` set, then register it in `pydmconverter/sites/__init__.py`.
37
37
 
38
+ ## Display roots
39
+
40
+ `--display-root <dir>` or the `PYDMCONVERTER_DISPLAY_ROOTS` environment variable
41
+
42
+ An EDM display can open another display by its absolute path on the EDM console, for example `/opt/edm/display/misc/panel.edl`. PyDM joins each directory it searches with the display name, so an absolute name only finds a file at that exact path. Give the console's display directory as a display root, and related display and embedded display names below it are written relative to it: `/opt/edm/display/misc/panel.edl` becomes `misc/panel.ui` (`misc/panel.screen.json` with `--target react`). PyDM finds the converted display when the converted display tree is the working directory or is listed in `PYDM_DISPLAYS_PATH`.
43
+
44
+ - Repeat `--display-root` for more than one directory. In the environment variable, separate them with `:`, as in `EDMDATAFILES`.
45
+ - `--display-root` overrides the environment variable. With neither, display names are left as they are.
46
+ - A display root must be an absolute directory other than `/`.
47
+ - Other names are unchanged: relative names, other absolute paths, a name that climbs out of the root with `..`, and image and shell command files.
48
+ - The roots are the EDM console's directories, not those of the machine running the converter, so they are not taken from `EDMDATAFILES`.
49
+
50
+ **Usage:**
51
+ ``` bash
52
+ pydmconverter /path/to/file.edl output.ui --display-root /opt/edm/display
53
+ ```
54
+ ``` bash
55
+ export PYDMCONVERTER_DISPLAY_ROOTS=/opt/edm/display:/opt/other/edm/display
56
+ pydmconverter /path/to/file.edl output.ui
57
+ ```
58
+
38
59
  ## Help
39
60
 
40
61
  `-h` or `--help`
@@ -76,3 +76,27 @@ To convert with SLAC-specific rules (e.g. skipping exit buttons):
76
76
  ``` bash
77
77
  pydmconverter /afs/slac/g/lcls/edm/file.edl file.ui --site slac
78
78
  ```
79
+
80
+ # EDM Behaviours That Convert Differently
81
+
82
+ ## Related display buttons
83
+
84
+ - **Close the parent window.** An EDM related display entry with *close action*
85
+ set (`closeAction` or `closeDisplay`) opens its display in a new window, then
86
+ closes the window it was opened from. When every entry of a button closes,
87
+ the converted button has `openInNewWindow` set to false: in the PyDM app the
88
+ new display replaces the current one in the same window, and the back button
89
+ returns to it. Shift-click and the right-click *Open in New Window* still open
90
+ a new window. A button where only some entries close opens all of them in a
91
+ new window and leaves the parent open.
92
+ EDM never closes the parent from a popup (*button3Popup*, or *useFocus* on a
93
+ button with one display), so such a button keeps a new window.
94
+ - **Macro precedence.** PyDM passes the parent display's macros to the new
95
+ display and lets the button's own macros override them. EDM, by default, puts
96
+ the parent's macros first and drops a later duplicate, so where both define
97
+ the same name the parent's value wins in EDM and the button's value wins in
98
+ PyDM.
99
+ - **`propagateMacros` and `replaceSymbols`.** EDM can open a display with only
100
+ the button's symbols (`replaceSymbols`), or with the `edm -m` macros and the
101
+ button's symbols but not the parent's macros (`propagateMacros` off). PyDM
102
+ always passes the parent's macros, so neither setting is converted.
@@ -2,8 +2,8 @@ name: pydm-converter-tool-dev
2
2
  channels:
3
3
  - conda-forge
4
4
  dependencies:
5
- - python=3.9
6
- - pydm
5
+ - python=3.10
6
+ - pydm>=1.29
7
7
  - pandas
8
8
  - pytest
9
9
  - pytest-qt