PyDMConverter 1.0.5__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 (277) hide show
  1. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.gitignore +1 -1
  2. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PKG-INFO +3 -3
  3. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/PKG-INFO +3 -3
  4. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/SOURCES.txt +51 -1
  5. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/requires.txt +2 -2
  6. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/scm_file_list.json +196 -146
  7. pydmconverter-1.0.7/PyDMConverter.egg-info/scm_version.json +8 -0
  8. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/arguments.md +21 -0
  9. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/user_guide.md +24 -0
  10. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/environment.yml +2 -2
  11. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/__main__.py +96 -8
  12. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/custom_types.py +16 -4
  13. {pydmconverter-1.0.5 → 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.5 → pydmconverter-1.0.7}/pydmconverter/edm/parser_helpers.py +662 -104
  22. pydmconverter-1.0.7/pydmconverter/edm/window_macros.py +84 -0
  23. {pydmconverter-1.0.5 → 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/VENDORED_SCHEMA.md +26 -0
  26. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/data/screen-ir.schema.json +1 -1
  27. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/absolute-canvas.json +3 -0
  28. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/arc.json +13 -0
  29. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/ellipse.json +12 -0
  30. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/embedded-display.json +8 -0
  31. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/frame.json +8 -0
  32. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/group-box.json +8 -0
  33. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/group.json +6 -0
  34. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/image-view.json +7 -0
  35. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/line.json +13 -0
  36. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/polygon.json +14 -0
  37. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-button.json +20 -0
  38. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-byte-led.json +12 -0
  39. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-checkbox.json +9 -0
  40. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +9 -0
  41. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-label.json +18 -0
  42. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-led.json +9 -0
  43. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-meter.json +12 -0
  44. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +10 -0
  45. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-radio-group.json +9 -0
  46. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-slider.json +11 -0
  47. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-spinbox.json +13 -0
  48. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/pv-text-input.json +11 -0
  49. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/qwidget-container.json +5 -0
  50. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/rectangle.json +12 -0
  51. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/regular-button.json +9 -0
  52. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/related-display-button.json +11 -0
  53. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/scroll-area.json +8 -0
  54. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/shell-command-button.json +14 -0
  55. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/tabs.json +4 -0
  56. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/text-label.json +11 -0
  57. pydmconverter-1.0.7/pydmconverter/ir/data/widget-registry/waveform-plot.json +10 -0
  58. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/fox.py +37 -3
  59. pydmconverter-1.0.7/pydmconverter/ir/macros.py +64 -0
  60. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/model.py +7 -5
  61. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/registry.py +13 -40
  62. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/source.py +16 -1
  63. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/transforms.py +64 -9
  64. pydmconverter-1.0.7/pydmconverter/react.py +279 -0
  65. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ui/__init__.py +1 -1
  66. pydmconverter-1.0.7/pydmconverter/ui/ir_adapter.py +633 -0
  67. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/widgets.py +216 -95
  68. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/widgets_helpers.py +236 -113
  69. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pyproject.toml +2 -2
  70. pydmconverter-1.0.7/tests/conftest.py +10 -0
  71. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/basic_widgets.edl +1 -0
  72. pydmconverter-1.0.7/tests/edm/fixtures/calc.list +5 -0
  73. pydmconverter-1.0.7/tests/edm/fixtures/calc_rules.edl +62 -0
  74. pydmconverter-1.0.7/tests/edm/fixtures/channel_roles.edl +240 -0
  75. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/colors.edl +2 -1
  76. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/integration_combined.screen.json +5 -3
  77. pydmconverter-1.0.7/tests/edm/fixtures/menu_button.edl +99 -0
  78. pydmconverter-1.0.7/tests/edm/fixtures/pip_menu.edl +93 -0
  79. pydmconverter-1.0.7/tests/edm/fixtures/symbol_states.edl +80 -0
  80. pydmconverter-1.0.7/tests/edm/fixtures/symbol_two_state.edl +44 -0
  81. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/textdsp.edl +23 -1
  82. pydmconverter-1.0.7/tests/edm/test_alarm_severity_inputs.py +211 -0
  83. pydmconverter-1.0.7/tests/edm/test_batch2_widget_fixes.py +75 -0
  84. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_byte_and_related.py +8 -2
  85. pydmconverter-1.0.7/tests/edm/test_calc_arguments.py +103 -0
  86. pydmconverter-1.0.7/tests/edm/test_calc_expressions_qt.py +42 -0
  87. pydmconverter-1.0.7/tests/edm/test_calc_identifiers.py +106 -0
  88. pydmconverter-1.0.7/tests/edm/test_calc_rules_and_locals.py +61 -0
  89. pydmconverter-1.0.7/tests/edm/test_channel_attrs_and_alarm_rules.py +280 -0
  90. pydmconverter-1.0.7/tests/edm/test_channel_roles.py +349 -0
  91. pydmconverter-1.0.7/tests/edm/test_color_rules.py +394 -0
  92. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_colors.py +85 -5
  93. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_control_widgets.py +22 -2
  94. pydmconverter-1.0.7/tests/edm/test_converter.py +1309 -0
  95. pydmconverter-1.0.7/tests/edm/test_display_roots.py +280 -0
  96. pydmconverter-1.0.7/tests/edm/test_embedded_tabs.py +1121 -0
  97. pydmconverter-1.0.7/tests/edm/test_error_isolation.py +138 -0
  98. pydmconverter-1.0.7/tests/edm/test_fidelity_edm_batch.py +79 -0
  99. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_graphics_widgets.py +20 -13
  100. pydmconverter-1.0.7/tests/edm/test_indexed_blocks.py +224 -0
  101. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_ir_adapter.py +59 -1
  102. pydmconverter-1.0.7/tests/edm/test_menu_button.py +273 -0
  103. pydmconverter-1.0.7/tests/edm/test_menu_links.py +200 -0
  104. pydmconverter-1.0.7/tests/edm/test_menumux.py +1160 -0
  105. pydmconverter-1.0.7/tests/edm/test_parser.py +512 -0
  106. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_parser_helpers.py +232 -11
  107. pydmconverter-1.0.7/tests/edm/test_pip_and_macro_declarations.py +382 -0
  108. pydmconverter-1.0.7/tests/edm/test_query_escaping.py +284 -0
  109. pydmconverter-1.0.7/tests/edm/test_related_display_close.py +135 -0
  110. pydmconverter-1.0.7/tests/edm/test_related_display_label.py +168 -0
  111. pydmconverter-1.0.7/tests/edm/test_rule_initial_values.py +503 -0
  112. pydmconverter-1.0.7/tests/edm/test_slider_orientation.py +142 -0
  113. pydmconverter-1.0.7/tests/edm/test_symbol_orientation.py +222 -0
  114. pydmconverter-1.0.7/tests/edm/test_symbol_robustness.py +155 -0
  115. pydmconverter-1.0.7/tests/edm/test_symbol_scaling.py +483 -0
  116. pydmconverter-1.0.7/tests/edm/test_symbol_states.py +183 -0
  117. pydmconverter-1.0.7/tests/edm/test_text_display_fidelity.py +143 -0
  118. pydmconverter-1.0.7/tests/edm/test_ui_alarm_flags.py +319 -0
  119. pydmconverter-1.0.7/tests/edm/test_ui_drawing_pen.py +214 -0
  120. pydmconverter-1.0.7/tests/edm/test_visibility_rules.py +343 -0
  121. pydmconverter-1.0.7/tests/edm/test_window_macros.py +596 -0
  122. pydmconverter-1.0.7/tests/edm/test_xy_graph_pvs.py +128 -0
  123. pydmconverter-1.0.7/tests/ir/test_ir_builder.py +476 -0
  124. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_fox.py +8 -0
  125. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_model.py +14 -3
  126. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_registry.py +42 -26
  127. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_transforms.py +47 -2
  128. pydmconverter-1.0.7/tests/test_alarm_colors_qt.py +202 -0
  129. pydmconverter-1.0.7/tests/test_drawing_pen_qt.py +337 -0
  130. pydmconverter-1.0.7/tests/test_headless_import.py +70 -0
  131. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/test_main.py +81 -0
  132. pydmconverter-1.0.7/tests/test_pip_stylesheet_qt.py +131 -0
  133. pydmconverter-1.0.7/tests/test_react.py +530 -0
  134. pydmconverter-1.0.7/tests/test_ui_rules.py +89 -0
  135. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/test_widgets.py +298 -0
  136. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/test_widgets_helpers.py +193 -16
  137. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ui/test_byte_and_related.py +1 -1
  138. pydmconverter-1.0.7/tests/ui/test_ir_adapter.py +618 -0
  139. pydmconverter-1.0.7/tests/ui/test_template_repeater.py +260 -0
  140. pydmconverter-1.0.7/tests/ui/test_unmapped_classes.py +190 -0
  141. pydmconverter-1.0.5/PyDMConverter.egg-info/scm_version.json +0 -8
  142. pydmconverter-1.0.5/pydmconverter/edm/converter_helpers.py +0 -1390
  143. pydmconverter-1.0.5/pydmconverter/edm/edm_qt.py +0 -142
  144. pydmconverter-1.0.5/pydmconverter/edm/ir_adapter.py +0 -570
  145. pydmconverter-1.0.5/pydmconverter/edm/menumux.py +0 -102
  146. pydmconverter-1.0.5/pydmconverter/edm/parser.py +0 -710
  147. pydmconverter-1.0.5/pydmconverter/ir/builder.py +0 -198
  148. pydmconverter-1.0.5/pydmconverter/ir/data/VENDORED_SCHEMA.md +0 -25
  149. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha +0 -1
  150. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/absolute-canvas.json +0 -35
  151. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/arc.json +0 -69
  152. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/ellipse.json +0 -63
  153. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/embedded-display.json +0 -55
  154. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/frame.json +0 -52
  155. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/group-box.json +0 -44
  156. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/group.json +0 -41
  157. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/image-view.json +0 -51
  158. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/line.json +0 -78
  159. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-button.json +0 -57
  160. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-byte-led.json +0 -58
  161. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-checkbox.json +0 -55
  162. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +0 -49
  163. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-label.json +0 -77
  164. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-led.json +0 -50
  165. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-meter.json +0 -56
  166. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +0 -62
  167. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-radio-group.json +0 -53
  168. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-slider.json +0 -58
  169. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-text-input.json +0 -57
  170. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/qwidget-container.json +0 -44
  171. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/rectangle.json +0 -64
  172. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/regular-button.json +0 -62
  173. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/related-display-button.json +0 -60
  174. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/scroll-area.json +0 -52
  175. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/shell-command-button.json +0 -59
  176. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/tabs.json +0 -50
  177. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/text-label.json +0 -60
  178. pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/waveform-plot.json +0 -62
  179. pydmconverter-1.0.5/pydmconverter/ir/macros.py +0 -34
  180. pydmconverter-1.0.5/pydmconverter/react.py +0 -146
  181. pydmconverter-1.0.5/pydmconverter/ui/ir_adapter.py +0 -181
  182. pydmconverter-1.0.5/tests/edm/test_converter.py +0 -439
  183. pydmconverter-1.0.5/tests/edm/test_parser.py +0 -269
  184. pydmconverter-1.0.5/tests/edm/test_visibility_rules.py +0 -54
  185. pydmconverter-1.0.5/tests/ir/test_ir_builder.py +0 -224
  186. pydmconverter-1.0.5/tests/test_headless_import.py +0 -35
  187. pydmconverter-1.0.5/tests/test_react.py +0 -72
  188. pydmconverter-1.0.5/tests/ui/test_ir_adapter.py +0 -153
  189. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  190. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  191. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/workflows/gh-pages.yml +0 -0
  192. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/workflows/lint.yml +0 -0
  193. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/workflows/pypi_release.yml +0 -0
  194. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.github/workflows/tests.yml +0 -0
  195. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/.pre-commit-config.yaml +0 -0
  196. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/LICENSE +0 -0
  197. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/dependency_links.txt +0 -0
  198. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/entry_points.txt +0 -0
  199. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/PyDMConverter.egg-info/top_level.txt +0 -0
  200. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/README.md +0 -0
  201. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/file_minus.png +0 -0
  202. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/file_plus.png +0 -0
  203. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/file_x.png +0 -0
  204. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/folder_plus.png +0 -0
  205. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/folder_search.png +0 -0
  206. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/play_circle_outline.png +0 -0
  207. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/resources/settings.png +0 -0
  208. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/model/__init__.py +0 -0
  209. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/model/app_model.py +0 -0
  210. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/model/options_model.py +0 -0
  211. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/__init__.py +0 -0
  212. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/file_select_widget.py +0 -0
  213. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/main_window.py +0 -0
  214. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/main_window.ui +0 -0
  215. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/options_window.py +0 -0
  216. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/app/src/view/output_select_dialog.py +0 -0
  217. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/images/pydmconverter.png +0 -0
  218. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/index.md +0 -0
  219. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/custom_types.md +0 -0
  220. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/edm/converter.md +0 -0
  221. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/edm/converter_helpers.md +0 -0
  222. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/edm/menumux.md +0 -0
  223. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/edm/parser.md +0 -0
  224. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/edm/parser_helpers.md +0 -0
  225. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/index.md +0 -0
  226. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/pydm-converter-tool.md +0 -0
  227. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/widgets.md +0 -0
  228. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/docs/reference/widgets_helpers.md +0 -0
  229. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/examples/TEM_mapping.edl +0 -0
  230. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/examples/all_bsy0_main.edl +0 -0
  231. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/examples/all_bsy0_main_with_groups.edl +0 -0
  232. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/examples/prosilica.edl +0 -0
  233. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/mkdocs.yml +0 -0
  234. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/__init__.py +0 -0
  235. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/edm/__init__.py +0 -0
  236. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/exceptions.py +0 -0
  237. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/base.py +0 -0
  238. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/emit.py +0 -0
  239. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/ids.py +0 -0
  240. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/ir/schema.py +0 -0
  241. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/launch_gui.sh +0 -0
  242. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/sites/__init__.py +0 -0
  243. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/pydmconverter/sites/slac.py +0 -0
  244. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/setup.cfg +0 -0
  245. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/__init__.py +0 -0
  246. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/byte_and_related.edl +0 -0
  247. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/colors.list +0 -0
  248. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/exit_button.edl +0 -0
  249. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_arc.edl +0 -0
  250. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_bars.edl +0 -0
  251. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_circle.edl +0 -0
  252. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_group.edl +0 -0
  253. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_line.edl +0 -0
  254. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/graphics_rect.edl +0 -0
  255. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/indicator.edl +0 -0
  256. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/integration_combined.edl +0 -0
  257. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/meter.edl +0 -0
  258. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/misc_buttons.edl +0 -0
  259. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/mmv_multiline.edl +0 -0
  260. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/png.edl +0 -0
  261. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/radio.edl +0 -0
  262. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/shell_cmd.edl +0 -0
  263. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/unknown.edl +0 -0
  264. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/fixtures/visibility.edl +0 -0
  265. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_converter_helpers.py +0 -0
  266. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/edm/test_integration_combined.py +0 -0
  267. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/__init__.py +0 -0
  268. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/conftest.py +0 -0
  269. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_emit.py +0 -0
  270. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_ids.py +0 -0
  271. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ir/test_ir_schema.py +0 -0
  272. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/test_options_model.py +0 -0
  273. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/test_sites.py +0 -0
  274. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ui/__init__.py +0 -0
  275. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ui/fixtures/basic_widgets.ui +0 -0
  276. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ui/fixtures/byte_and_related.ui +0 -0
  277. {pydmconverter-1.0.5 → pydmconverter-1.0.7}/tests/ui/fixtures/newly_supported.ui +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.5
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.5
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
@@ -93,6 +95,7 @@ pydmconverter/ir/data/widget-registry/group-box.json
93
95
  pydmconverter/ir/data/widget-registry/group.json
94
96
  pydmconverter/ir/data/widget-registry/image-view.json
95
97
  pydmconverter/ir/data/widget-registry/line.json
98
+ pydmconverter/ir/data/widget-registry/polygon.json
96
99
  pydmconverter/ir/data/widget-registry/pv-button.json
97
100
  pydmconverter/ir/data/widget-registry/pv-byte-led.json
98
101
  pydmconverter/ir/data/widget-registry/pv-checkbox.json
@@ -103,6 +106,7 @@ pydmconverter/ir/data/widget-registry/pv-meter.json
103
106
  pydmconverter/ir/data/widget-registry/pv-progress-bar.json
104
107
  pydmconverter/ir/data/widget-registry/pv-radio-group.json
105
108
  pydmconverter/ir/data/widget-registry/pv-slider.json
109
+ pydmconverter/ir/data/widget-registry/pv-spinbox.json
106
110
  pydmconverter/ir/data/widget-registry/pv-text-input.json
107
111
  pydmconverter/ir/data/widget-registry/qwidget-container.json
108
112
  pydmconverter/ir/data/widget-registry/rectangle.json
@@ -118,26 +122,66 @@ pydmconverter/sites/slac.py
118
122
  pydmconverter/ui/__init__.py
119
123
  pydmconverter/ui/ir_adapter.py
120
124
  tests/__init__.py
125
+ tests/conftest.py
126
+ tests/test_alarm_colors_qt.py
127
+ tests/test_drawing_pen_qt.py
121
128
  tests/test_headless_import.py
122
129
  tests/test_main.py
123
130
  tests/test_options_model.py
131
+ tests/test_pip_stylesheet_qt.py
124
132
  tests/test_react.py
125
133
  tests/test_sites.py
134
+ tests/test_ui_rules.py
126
135
  tests/test_widgets.py
127
136
  tests/test_widgets_helpers.py
137
+ tests/edm/test_alarm_severity_inputs.py
138
+ tests/edm/test_batch2_widget_fixes.py
128
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
143
+ tests/edm/test_calc_rules_and_locals.py
144
+ tests/edm/test_channel_attrs_and_alarm_rules.py
145
+ tests/edm/test_channel_roles.py
146
+ tests/edm/test_color_rules.py
129
147
  tests/edm/test_colors.py
130
148
  tests/edm/test_control_widgets.py
131
149
  tests/edm/test_converter.py
132
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
154
+ tests/edm/test_fidelity_edm_batch.py
133
155
  tests/edm/test_graphics_widgets.py
156
+ tests/edm/test_indexed_blocks.py
134
157
  tests/edm/test_integration_combined.py
135
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
136
162
  tests/edm/test_parser.py
137
163
  tests/edm/test_parser_helpers.py
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
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
138
177
  tests/edm/test_visibility_rules.py
178
+ tests/edm/test_window_macros.py
179
+ tests/edm/test_xy_graph_pvs.py
139
180
  tests/edm/fixtures/basic_widgets.edl
140
181
  tests/edm/fixtures/byte_and_related.edl
182
+ tests/edm/fixtures/calc.list
183
+ tests/edm/fixtures/calc_rules.edl
184
+ tests/edm/fixtures/channel_roles.edl
141
185
  tests/edm/fixtures/colors.edl
142
186
  tests/edm/fixtures/colors.list
143
187
  tests/edm/fixtures/exit_button.edl
@@ -150,12 +194,16 @@ tests/edm/fixtures/graphics_rect.edl
150
194
  tests/edm/fixtures/indicator.edl
151
195
  tests/edm/fixtures/integration_combined.edl
152
196
  tests/edm/fixtures/integration_combined.screen.json
197
+ tests/edm/fixtures/menu_button.edl
153
198
  tests/edm/fixtures/meter.edl
154
199
  tests/edm/fixtures/misc_buttons.edl
155
200
  tests/edm/fixtures/mmv_multiline.edl
201
+ tests/edm/fixtures/pip_menu.edl
156
202
  tests/edm/fixtures/png.edl
157
203
  tests/edm/fixtures/radio.edl
158
204
  tests/edm/fixtures/shell_cmd.edl
205
+ tests/edm/fixtures/symbol_states.edl
206
+ tests/edm/fixtures/symbol_two_state.edl
159
207
  tests/edm/fixtures/textdsp.edl
160
208
  tests/edm/fixtures/unknown.edl
161
209
  tests/edm/fixtures/visibility.edl
@@ -172,6 +220,8 @@ tests/ir/test_ir_transforms.py
172
220
  tests/ui/__init__.py
173
221
  tests/ui/test_byte_and_related.py
174
222
  tests/ui/test_ir_adapter.py
223
+ tests/ui/test_template_repeater.py
224
+ tests/ui/test_unmapped_classes.py
175
225
  tests/ui/fixtures/basic_widgets.ui
176
226
  tests/ui/fixtures/byte_and_related.ui
177
227
  tests/ui/fixtures/newly_supported.ui
@@ -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,173 +1,223 @@
1
1
  {
2
2
  "files": [
3
+ ".github/ISSUE_TEMPLATE/bug-report.yml",
4
+ ".github/ISSUE_TEMPLATE/feature-request.yml",
5
+ ".github/workflows/gh-pages.yml",
6
+ ".github/workflows/lint.yml",
7
+ ".github/workflows/pypi_release.yml",
8
+ ".github/workflows/tests.yml",
9
+ ".gitignore",
3
10
  ".pre-commit-config.yaml",
4
- "README.md",
5
- "environment.yml",
6
11
  "LICENSE",
7
- "pyproject.toml",
8
- "mkdocs.yml",
9
- ".gitignore",
10
- "docs/arguments.md",
11
- "docs/user_guide.md",
12
- "docs/index.md",
13
- "docs/images/pydmconverter.png",
14
- "docs/reference/widgets_helpers.md",
15
- "docs/reference/widgets.md",
16
- "docs/reference/custom_types.md",
17
- "docs/reference/pydm-converter-tool.md",
18
- "docs/reference/index.md",
19
- "docs/reference/edm/parser_helpers.md",
20
- "docs/reference/edm/parser.md",
21
- "docs/reference/edm/menumux.md",
22
- "docs/reference/edm/converter.md",
23
- "docs/reference/edm/converter_helpers.md",
24
- "tests/test_react.py",
25
- "tests/test_headless_import.py",
26
- "tests/__init__.py",
27
- "tests/test_widgets_helpers.py",
28
- "tests/test_widgets.py",
29
- "tests/test_sites.py",
30
- "tests/test_options_model.py",
31
- "tests/test_main.py",
32
- "tests/ir/test_ir_transforms.py",
33
- "tests/ir/test_ir_fox.py",
34
- "tests/ir/test_ir_ids.py",
35
- "tests/ir/__init__.py",
36
- "tests/ir/test_ir_model.py",
37
- "tests/ir/test_ir_builder.py",
38
- "tests/ir/conftest.py",
39
- "tests/ir/test_ir_registry.py",
40
- "tests/ir/test_ir_emit.py",
41
- "tests/ir/test_ir_schema.py",
42
- "tests/ui/__init__.py",
43
- "tests/ui/test_ir_adapter.py",
44
- "tests/ui/test_byte_and_related.py",
45
- "tests/ui/fixtures/byte_and_related.ui",
46
- "tests/ui/fixtures/basic_widgets.ui",
47
- "tests/ui/fixtures/newly_supported.ui",
48
- "tests/edm/test_converter_helpers.py",
49
- "tests/edm/test_ir_adapter.py",
50
- "tests/edm/test_parser_helpers.py",
51
- "tests/edm/test_integration_combined.py",
52
- "tests/edm/test_parser.py",
53
- "tests/edm/test_converter.py",
54
- "tests/edm/test_byte_and_related.py",
55
- "tests/edm/test_graphics_widgets.py",
56
- "tests/edm/test_control_widgets.py",
57
- "tests/edm/test_colors.py",
58
- "tests/edm/test_visibility_rules.py",
59
- "tests/edm/fixtures/graphics_arc.edl",
60
- "tests/edm/fixtures/textdsp.edl",
61
- "tests/edm/fixtures/graphics_rect.edl",
62
- "tests/edm/fixtures/unknown.edl",
63
- "tests/edm/fixtures/exit_button.edl",
64
- "tests/edm/fixtures/basic_widgets.edl",
65
- "tests/edm/fixtures/integration_combined.edl",
66
- "tests/edm/fixtures/visibility.edl",
67
- "tests/edm/fixtures/shell_cmd.edl",
68
- "tests/edm/fixtures/colors.list",
69
- "tests/edm/fixtures/graphics_bars.edl",
70
- "tests/edm/fixtures/mmv_multiline.edl",
71
- "tests/edm/fixtures/misc_buttons.edl",
72
- "tests/edm/fixtures/colors.edl",
73
- "tests/edm/fixtures/graphics_line.edl",
74
- "tests/edm/fixtures/radio.edl",
75
- "tests/edm/fixtures/indicator.edl",
76
- "tests/edm/fixtures/byte_and_related.edl",
77
- "tests/edm/fixtures/png.edl",
78
- "tests/edm/fixtures/integration_combined.screen.json",
79
- "tests/edm/fixtures/graphics_circle.edl",
80
- "tests/edm/fixtures/meter.edl",
81
- "tests/edm/fixtures/graphics_group.edl",
12
+ "README.md",
82
13
  "app/resources/file_minus.png",
83
- "app/resources/folder_search.png",
84
- "app/resources/play_circle_outline.png",
85
- "app/resources/settings.png",
86
14
  "app/resources/file_plus.png",
87
15
  "app/resources/file_x.png",
88
16
  "app/resources/folder_plus.png",
89
- "app/src/view/output_select_dialog.py",
90
- "app/src/view/main_window.ui",
91
- "app/src/view/__init__.py",
92
- "app/src/view/main_window.py",
93
- "app/src/view/file_select_widget.py",
94
- "app/src/view/options_window.py",
17
+ "app/resources/folder_search.png",
18
+ "app/resources/play_circle_outline.png",
19
+ "app/resources/settings.png",
95
20
  "app/src/model/__init__.py",
96
21
  "app/src/model/app_model.py",
97
22
  "app/src/model/options_model.py",
98
- "pydmconverter/react.py",
99
- "pydmconverter/widgets.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",
45
+ "examples/all_bsy0_main.edl",
46
+ "examples/all_bsy0_main_with_groups.edl",
47
+ "examples/prosilica.edl",
48
+ "mkdocs.yml",
100
49
  "pydmconverter/__init__.py",
101
- "pydmconverter/exceptions.py",
102
- "pydmconverter/launch_gui.sh",
103
- "pydmconverter/widgets_helpers.py",
104
- "pydmconverter/custom_types.py",
105
50
  "pydmconverter/__main__.py",
106
- "pydmconverter/ir/model.py",
51
+ "pydmconverter/custom_types.py",
52
+ "pydmconverter/edm/__init__.py",
53
+ "pydmconverter/edm/converter.py",
54
+ "pydmconverter/edm/converter_helpers.py",
55
+ "pydmconverter/edm/display_roots.py",
56
+ "pydmconverter/edm/edm_qt.py",
57
+ "pydmconverter/edm/ir_adapter.py",
58
+ "pydmconverter/edm/menu_links.py",
59
+ "pydmconverter/edm/menumux.py",
60
+ "pydmconverter/edm/parser.py",
61
+ "pydmconverter/edm/parser_helpers.py",
62
+ "pydmconverter/edm/window_macros.py",
63
+ "pydmconverter/exceptions.py",
107
64
  "pydmconverter/ir/__init__.py",
108
- "pydmconverter/ir/source.py",
109
- "pydmconverter/ir/schema.py",
110
- "pydmconverter/ir/fox.py",
111
- "pydmconverter/ir/emit.py",
112
- "pydmconverter/ir/transforms.py",
113
- "pydmconverter/ir/ids.py",
114
- "pydmconverter/ir/builder.py",
115
- "pydmconverter/ir/macros.py",
116
- "pydmconverter/ir/registry.py",
117
65
  "pydmconverter/ir/base.py",
118
- "pydmconverter/ir/data/screen-ir.schema.json",
66
+ "pydmconverter/ir/builder.py",
119
67
  "pydmconverter/ir/data/VENDORED_SCHEMA.md",
120
- "pydmconverter/ir/data/widget-registry/qwidget-container.json",
121
- "pydmconverter/ir/data/widget-registry/rectangle.json",
122
- "pydmconverter/ir/data/widget-registry/pv-byte-led.json",
123
- "pydmconverter/ir/data/widget-registry/pv-label.json",
124
- "pydmconverter/ir/data/widget-registry/pv-button.json",
125
- "pydmconverter/ir/data/widget-registry/regular-button.json",
126
- "pydmconverter/ir/data/widget-registry/pv-progress-bar.json",
127
- "pydmconverter/ir/data/widget-registry/text-label.json",
128
- "pydmconverter/ir/data/widget-registry/pv-slider.json",
129
- "pydmconverter/ir/data/widget-registry/tabs.json",
68
+ "pydmconverter/ir/data/screen-ir.schema.json",
69
+ "pydmconverter/ir/data/widget-registry/absolute-canvas.json",
70
+ "pydmconverter/ir/data/widget-registry/arc.json",
130
71
  "pydmconverter/ir/data/widget-registry/ellipse.json",
131
- "pydmconverter/ir/data/widget-registry/pv-checkbox.json",
72
+ "pydmconverter/ir/data/widget-registry/embedded-display.json",
73
+ "pydmconverter/ir/data/widget-registry/frame.json",
132
74
  "pydmconverter/ir/data/widget-registry/group-box.json",
133
- "pydmconverter/ir/data/widget-registry/image-view.json",
134
75
  "pydmconverter/ir/data/widget-registry/group.json",
135
- "pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
76
+ "pydmconverter/ir/data/widget-registry/image-view.json",
136
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",
81
+ "pydmconverter/ir/data/widget-registry/pv-checkbox.json",
82
+ "pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
83
+ "pydmconverter/ir/data/widget-registry/pv-label.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",
87
+ "pydmconverter/ir/data/widget-registry/pv-radio-group.json",
88
+ "pydmconverter/ir/data/widget-registry/pv-slider.json",
89
+ "pydmconverter/ir/data/widget-registry/pv-spinbox.json",
137
90
  "pydmconverter/ir/data/widget-registry/pv-text-input.json",
138
- "pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha",
91
+ "pydmconverter/ir/data/widget-registry/qwidget-container.json",
92
+ "pydmconverter/ir/data/widget-registry/rectangle.json",
93
+ "pydmconverter/ir/data/widget-registry/regular-button.json",
94
+ "pydmconverter/ir/data/widget-registry/related-display-button.json",
139
95
  "pydmconverter/ir/data/widget-registry/scroll-area.json",
140
- "pydmconverter/ir/data/widget-registry/absolute-canvas.json",
141
- "pydmconverter/ir/data/widget-registry/frame.json",
142
- "pydmconverter/ir/data/widget-registry/pv-meter.json",
143
- "pydmconverter/ir/data/widget-registry/arc.json",
144
- "pydmconverter/ir/data/widget-registry/embedded-display.json",
145
- "pydmconverter/ir/data/widget-registry/waveform-plot.json",
146
96
  "pydmconverter/ir/data/widget-registry/shell-command-button.json",
147
- "pydmconverter/ir/data/widget-registry/related-display-button.json",
148
- "pydmconverter/ir/data/widget-registry/pv-radio-group.json",
149
- "pydmconverter/ir/data/widget-registry/pv-led.json",
150
- "pydmconverter/ui/__init__.py",
151
- "pydmconverter/ui/ir_adapter.py",
97
+ "pydmconverter/ir/data/widget-registry/tabs.json",
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",
152
111
  "pydmconverter/sites/__init__.py",
153
112
  "pydmconverter/sites/slac.py",
154
- "pydmconverter/edm/__init__.py",
155
- "pydmconverter/edm/ir_adapter.py",
156
- "pydmconverter/edm/converter_helpers.py",
157
- "pydmconverter/edm/menumux.py",
158
- "pydmconverter/edm/parser.py",
159
- "pydmconverter/edm/converter.py",
160
- "pydmconverter/edm/edm_qt.py",
161
- "pydmconverter/edm/parser_helpers.py",
162
- "examples/prosilica.edl",
163
- "examples/TEM_mapping.edl",
164
- "examples/all_bsy0_main.edl",
165
- "examples/all_bsy0_main_with_groups.edl",
166
- ".github/ISSUE_TEMPLATE/feature-request.yml",
167
- ".github/ISSUE_TEMPLATE/bug-report.yml",
168
- ".github/workflows/pypi_release.yml",
169
- ".github/workflows/tests.yml",
170
- ".github/workflows/lint.yml",
171
- ".github/workflows/gh-pages.yml"
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"
172
222
  ]
173
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