PyDMConverter 1.0.4__tar.gz → 1.0.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/gh-pages.yml +6 -3
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/lint.yml +2 -2
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/pypi_release.yml +3 -3
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/workflows/tests.yml +4 -4
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.gitignore +4 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PKG-INFO +1 -1
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/PKG-INFO +1 -1
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/SOURCES.txt +42 -7
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/scm_file_list.json +42 -7
- pydmconverter-1.0.5/PyDMConverter.egg-info/scm_version.json +8 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/edm_qt.py +48 -7
- pydmconverter-1.0.5/pydmconverter/edm/ir_adapter.py +570 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/parser.py +65 -41
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/parser_helpers.py +1 -1
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/builder.py +5 -4
- pydmconverter-1.0.5/pydmconverter/ir/data/VENDORED_SCHEMA.md +25 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/screen-ir.schema.json +163 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/arc.json +69 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/ellipse.json +63 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/group.json +41 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/line.json +78 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-label.json +8 -3
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/pv-meter.json +56 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-radio-group.json +11 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/qwidget-container.json +44 -0
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/rectangle.json +64 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/regular-button.json +15 -2
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/shell-command-button.json +59 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/text-label.json +8 -3
- pydmconverter-1.0.5/pydmconverter/ir/data/widget-registry/waveform-plot.json +62 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/emit.py +6 -1
- pydmconverter-1.0.5/pydmconverter/ir/schema.py +38 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/source.py +5 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/transforms.py +42 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/react.py +41 -8
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ui/ir_adapter.py +1 -1
- pydmconverter-1.0.4/tests/edm/fixtures/p0_min.edl → pydmconverter-1.0.5/tests/edm/fixtures/basic_widgets.edl +1 -1
- pydmconverter-1.0.5/tests/edm/fixtures/colors.edl +83 -0
- pydmconverter-1.0.5/tests/edm/fixtures/colors.list +12 -0
- pydmconverter-1.0.5/tests/edm/fixtures/exit_button.edl +49 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_arc.edl +61 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_bars.edl +64 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_circle.edl +29 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_group.edl +93 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_line.edl +90 -0
- pydmconverter-1.0.5/tests/edm/fixtures/graphics_rect.edl +62 -0
- pydmconverter-1.0.5/tests/edm/fixtures/indicator.edl +34 -0
- pydmconverter-1.0.5/tests/edm/fixtures/integration_combined.edl +242 -0
- pydmconverter-1.0.5/tests/edm/fixtures/integration_combined.screen.json +285 -0
- pydmconverter-1.0.5/tests/edm/fixtures/meter.edl +43 -0
- pydmconverter-1.0.5/tests/edm/fixtures/misc_buttons.edl +83 -0
- pydmconverter-1.0.5/tests/edm/fixtures/mmv_multiline.edl +52 -0
- pydmconverter-1.0.5/tests/edm/fixtures/png.edl +27 -0
- pydmconverter-1.0.5/tests/edm/fixtures/radio.edl +30 -0
- pydmconverter-1.0.5/tests/edm/fixtures/shell_cmd.edl +38 -0
- pydmconverter-1.0.5/tests/edm/fixtures/textdsp.edl +60 -0
- pydmconverter-1.0.5/tests/edm/fixtures/unknown.edl +29 -0
- pydmconverter-1.0.4/tests/edm/test_p1_widgets.py → pydmconverter-1.0.5/tests/edm/test_byte_and_related.py +2 -2
- pydmconverter-1.0.5/tests/edm/test_colors.py +135 -0
- pydmconverter-1.0.5/tests/edm/test_control_widgets.py +213 -0
- pydmconverter-1.0.5/tests/edm/test_graphics_widgets.py +219 -0
- pydmconverter-1.0.5/tests/edm/test_integration_combined.py +82 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_ir_adapter.py +15 -12
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_parser.py +81 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_visibility_rules.py +12 -8
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_builder.py +38 -0
- pydmconverter-1.0.5/tests/ir/test_ir_registry.py +139 -0
- pydmconverter-1.0.5/tests/ir/test_ir_schema.py +82 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_transforms.py +20 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_react.py +2 -2
- pydmconverter-1.0.4/tests/ui/fixtures/p0_min.ui → pydmconverter-1.0.5/tests/ui/fixtures/basic_widgets.ui +1 -1
- pydmconverter-1.0.4/tests/ui/fixtures/p1_widgets.ui → pydmconverter-1.0.5/tests/ui/fixtures/byte_and_related.ui +3 -3
- pydmconverter-1.0.5/tests/ui/fixtures/newly_supported.ui +88 -0
- pydmconverter-1.0.4/tests/ui/test_p1_widgets.py → pydmconverter-1.0.5/tests/ui/test_byte_and_related.py +4 -4
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ui/test_ir_adapter.py +50 -6
- pydmconverter-1.0.4/PyDMConverter.egg-info/scm_version.json +0 -8
- pydmconverter-1.0.4/pydmconverter/edm/ir_adapter.py +0 -195
- pydmconverter-1.0.4/pydmconverter/ir/data/screen-ir.schema.json +0 -424
- pydmconverter-1.0.4/pydmconverter/ir/schema.py +0 -62
- pydmconverter-1.0.4/tests/ir/test_ir_registry.py +0 -74
- pydmconverter-1.0.4/tests/ir/test_ir_schema.py +0 -25
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/.pre-commit-config.yaml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/LICENSE +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/dependency_links.txt +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/entry_points.txt +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/requires.txt +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/PyDMConverter.egg-info/top_level.txt +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/README.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_minus.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_plus.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/file_x.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/folder_plus.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/folder_search.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/play_circle_outline.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/resources/settings.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/app_model.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/model/options_model.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/file_select_widget.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/main_window.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/main_window.ui +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/options_window.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/app/src/view/output_select_dialog.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/arguments.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/images/pydmconverter.png +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/index.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/custom_types.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/converter.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/converter_helpers.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/menumux.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/parser.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/edm/parser_helpers.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/index.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/pydm-converter-tool.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/widgets.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/reference/widgets_helpers.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/docs/user_guide.md +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/environment.yml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/TEM_mapping.edl +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/all_bsy0_main.edl +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/all_bsy0_main_with_groups.edl +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/examples/prosilica.edl +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/mkdocs.yml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/__main__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/custom_types.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/converter.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/converter_helpers.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/edm/menumux.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/exceptions.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/base.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/absolute-canvas.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/embedded-display.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/frame.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/group-box.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/image-view.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-button.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-byte-led.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-checkbox.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-enum-combobox.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-led.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-progress-bar.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-slider.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/pv-text-input.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/related-display-button.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/scroll-area.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/data/widget-registry/tabs.json +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/fox.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/ids.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/macros.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/model.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ir/registry.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/launch_gui.sh +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/sites/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/sites/slac.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/ui/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/widgets.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pydmconverter/widgets_helpers.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/pyproject.toml +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/setup.cfg +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/__init__.py +0 -0
- /pydmconverter-1.0.4/tests/edm/fixtures/p1_widgets.edl → /pydmconverter-1.0.5/tests/edm/fixtures/byte_and_related.edl +0 -0
- /pydmconverter-1.0.4/tests/edm/fixtures/p0_vis.edl → /pydmconverter-1.0.5/tests/edm/fixtures/visibility.edl +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_converter.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_converter_helpers.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/edm/test_parser_helpers.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/__init__.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/conftest.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_emit.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_fox.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_ids.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ir/test_ir_model.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_headless_import.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_main.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_options_model.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_sites.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_widgets.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/test_widgets_helpers.py +0 -0
- {pydmconverter-1.0.4 → pydmconverter-1.0.5}/tests/ui/__init__.py +0 -0
|
@@ -7,6 +7,9 @@ on:
|
|
|
7
7
|
branches:
|
|
8
8
|
- main
|
|
9
9
|
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
|
|
10
13
|
jobs:
|
|
11
14
|
deploy:
|
|
12
15
|
if: ${{ github.repository == 'slaclab/pydm-converter-tool' }}
|
|
@@ -16,8 +19,8 @@ jobs:
|
|
|
16
19
|
os: [ubuntu-latest]
|
|
17
20
|
python-version: [3.9]
|
|
18
21
|
steps:
|
|
19
|
-
- uses: actions/checkout@v4
|
|
20
|
-
- uses: conda-incubator/setup-miniconda@v3
|
|
22
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
23
|
+
- uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3
|
|
21
24
|
with:
|
|
22
25
|
miniforge-version: latest
|
|
23
26
|
use-mamba: true
|
|
@@ -32,7 +35,7 @@ jobs:
|
|
|
32
35
|
mkdocs build
|
|
33
36
|
|
|
34
37
|
- name: Deploy to gh-pages
|
|
35
|
-
uses: peaceiris/actions-gh-pages@v4
|
|
38
|
+
uses: peaceiris/actions-gh-pages@84c30a85c19949d7eee79c4ff27748b70285e453 # v4
|
|
36
39
|
with:
|
|
37
40
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
38
41
|
publish_dir: ./site/
|
|
@@ -8,11 +8,11 @@ jobs:
|
|
|
8
8
|
lint:
|
|
9
9
|
runs-on: ubuntu-latest
|
|
10
10
|
steps:
|
|
11
|
-
- uses: actions/checkout@v4
|
|
11
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
12
12
|
with:
|
|
13
13
|
fetch-depth: 1
|
|
14
14
|
- name: Install Python
|
|
15
|
-
uses: actions/setup-python@v5
|
|
15
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
16
16
|
with:
|
|
17
17
|
python-version: "3.12"
|
|
18
18
|
- name: Install dependencies
|
|
@@ -11,11 +11,11 @@ jobs:
|
|
|
11
11
|
permissions:
|
|
12
12
|
id-token: write # IMPORTANT: this permission is mandatory for trusted publishing
|
|
13
13
|
steps:
|
|
14
|
-
- uses: actions/checkout@v4
|
|
14
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
15
15
|
with:
|
|
16
16
|
fetch-depth: 0
|
|
17
17
|
- name: Set up Python 3.12
|
|
18
|
-
uses: actions/setup-python@v5
|
|
18
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
19
19
|
with:
|
|
20
20
|
python-version: 3.12
|
|
21
21
|
- name: Install pypa/build
|
|
@@ -25,4 +25,4 @@ jobs:
|
|
|
25
25
|
run: |
|
|
26
26
|
python -m build --sdist --outdir dist/ .
|
|
27
27
|
- name: Publish package distributions to PyPI
|
|
28
|
-
uses: pypa/gh-action-pypi-publish@release/v1
|
|
28
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # release/v1
|
|
@@ -20,10 +20,10 @@ jobs:
|
|
|
20
20
|
DISPLAY: ':99.0'
|
|
21
21
|
QT_MAC_WANTS_LAYER: 1 # PyQT gui tests involving qtbot interaction on macOS will fail without this
|
|
22
22
|
steps:
|
|
23
|
-
- uses: actions/checkout@v4
|
|
23
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
24
24
|
|
|
25
25
|
- name: Setup Miniforge
|
|
26
|
-
uses: conda-incubator/setup-miniconda@v3
|
|
26
|
+
uses: conda-incubator/setup-miniconda@fc2d68f6413eb2d87b895e92f8584b5b94a10167 # v3
|
|
27
27
|
with:
|
|
28
28
|
miniforge-version: latest
|
|
29
29
|
activate-environment: pydm-converter-tool-dev
|
|
@@ -54,11 +54,11 @@ jobs:
|
|
|
54
54
|
test-pypi-build:
|
|
55
55
|
runs-on: ubuntu-latest
|
|
56
56
|
steps:
|
|
57
|
-
- uses: actions/checkout@v4
|
|
57
|
+
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
|
|
58
58
|
with:
|
|
59
59
|
fetch-depth: 0
|
|
60
60
|
- name: Set up Python 3.10
|
|
61
|
-
uses: actions/setup-python@v5
|
|
61
|
+
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
|
|
62
62
|
with:
|
|
63
63
|
python-version: '3.10'
|
|
64
64
|
- name: Install pypa/build
|
|
@@ -123,3 +123,7 @@ ENV/
|
|
|
123
123
|
# Canopy IR data files (generated schema + vendored widget registry) are tracked assets
|
|
124
124
|
!pydmconverter/ir/data/*.json
|
|
125
125
|
!pydmconverter/ir/data/widget-registry/*.json
|
|
126
|
+
|
|
127
|
+
# EDM->IR combined integration snapshot (committed regression fixture;
|
|
128
|
+
# see tests/edm/test_integration_combined.py for how to regenerate it deliberately)
|
|
129
|
+
!tests/edm/fixtures/integration_combined.screen.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyDMConverter
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.5
|
|
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>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PyDMConverter
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.5
|
|
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>
|
|
@@ -81,28 +81,38 @@ pydmconverter/ir/registry.py
|
|
|
81
81
|
pydmconverter/ir/schema.py
|
|
82
82
|
pydmconverter/ir/source.py
|
|
83
83
|
pydmconverter/ir/transforms.py
|
|
84
|
+
pydmconverter/ir/data/VENDORED_SCHEMA.md
|
|
84
85
|
pydmconverter/ir/data/screen-ir.schema.json
|
|
85
86
|
pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha
|
|
86
87
|
pydmconverter/ir/data/widget-registry/absolute-canvas.json
|
|
88
|
+
pydmconverter/ir/data/widget-registry/arc.json
|
|
89
|
+
pydmconverter/ir/data/widget-registry/ellipse.json
|
|
87
90
|
pydmconverter/ir/data/widget-registry/embedded-display.json
|
|
88
91
|
pydmconverter/ir/data/widget-registry/frame.json
|
|
89
92
|
pydmconverter/ir/data/widget-registry/group-box.json
|
|
93
|
+
pydmconverter/ir/data/widget-registry/group.json
|
|
90
94
|
pydmconverter/ir/data/widget-registry/image-view.json
|
|
95
|
+
pydmconverter/ir/data/widget-registry/line.json
|
|
91
96
|
pydmconverter/ir/data/widget-registry/pv-button.json
|
|
92
97
|
pydmconverter/ir/data/widget-registry/pv-byte-led.json
|
|
93
98
|
pydmconverter/ir/data/widget-registry/pv-checkbox.json
|
|
94
99
|
pydmconverter/ir/data/widget-registry/pv-enum-combobox.json
|
|
95
100
|
pydmconverter/ir/data/widget-registry/pv-label.json
|
|
96
101
|
pydmconverter/ir/data/widget-registry/pv-led.json
|
|
102
|
+
pydmconverter/ir/data/widget-registry/pv-meter.json
|
|
97
103
|
pydmconverter/ir/data/widget-registry/pv-progress-bar.json
|
|
98
104
|
pydmconverter/ir/data/widget-registry/pv-radio-group.json
|
|
99
105
|
pydmconverter/ir/data/widget-registry/pv-slider.json
|
|
100
106
|
pydmconverter/ir/data/widget-registry/pv-text-input.json
|
|
107
|
+
pydmconverter/ir/data/widget-registry/qwidget-container.json
|
|
108
|
+
pydmconverter/ir/data/widget-registry/rectangle.json
|
|
101
109
|
pydmconverter/ir/data/widget-registry/regular-button.json
|
|
102
110
|
pydmconverter/ir/data/widget-registry/related-display-button.json
|
|
103
111
|
pydmconverter/ir/data/widget-registry/scroll-area.json
|
|
112
|
+
pydmconverter/ir/data/widget-registry/shell-command-button.json
|
|
104
113
|
pydmconverter/ir/data/widget-registry/tabs.json
|
|
105
114
|
pydmconverter/ir/data/widget-registry/text-label.json
|
|
115
|
+
pydmconverter/ir/data/widget-registry/waveform-plot.json
|
|
106
116
|
pydmconverter/sites/__init__.py
|
|
107
117
|
pydmconverter/sites/slac.py
|
|
108
118
|
pydmconverter/ui/__init__.py
|
|
@@ -115,16 +125,40 @@ tests/test_react.py
|
|
|
115
125
|
tests/test_sites.py
|
|
116
126
|
tests/test_widgets.py
|
|
117
127
|
tests/test_widgets_helpers.py
|
|
128
|
+
tests/edm/test_byte_and_related.py
|
|
129
|
+
tests/edm/test_colors.py
|
|
130
|
+
tests/edm/test_control_widgets.py
|
|
118
131
|
tests/edm/test_converter.py
|
|
119
132
|
tests/edm/test_converter_helpers.py
|
|
133
|
+
tests/edm/test_graphics_widgets.py
|
|
134
|
+
tests/edm/test_integration_combined.py
|
|
120
135
|
tests/edm/test_ir_adapter.py
|
|
121
|
-
tests/edm/test_p1_widgets.py
|
|
122
136
|
tests/edm/test_parser.py
|
|
123
137
|
tests/edm/test_parser_helpers.py
|
|
124
138
|
tests/edm/test_visibility_rules.py
|
|
125
|
-
tests/edm/fixtures/
|
|
126
|
-
tests/edm/fixtures/
|
|
127
|
-
tests/edm/fixtures/
|
|
139
|
+
tests/edm/fixtures/basic_widgets.edl
|
|
140
|
+
tests/edm/fixtures/byte_and_related.edl
|
|
141
|
+
tests/edm/fixtures/colors.edl
|
|
142
|
+
tests/edm/fixtures/colors.list
|
|
143
|
+
tests/edm/fixtures/exit_button.edl
|
|
144
|
+
tests/edm/fixtures/graphics_arc.edl
|
|
145
|
+
tests/edm/fixtures/graphics_bars.edl
|
|
146
|
+
tests/edm/fixtures/graphics_circle.edl
|
|
147
|
+
tests/edm/fixtures/graphics_group.edl
|
|
148
|
+
tests/edm/fixtures/graphics_line.edl
|
|
149
|
+
tests/edm/fixtures/graphics_rect.edl
|
|
150
|
+
tests/edm/fixtures/indicator.edl
|
|
151
|
+
tests/edm/fixtures/integration_combined.edl
|
|
152
|
+
tests/edm/fixtures/integration_combined.screen.json
|
|
153
|
+
tests/edm/fixtures/meter.edl
|
|
154
|
+
tests/edm/fixtures/misc_buttons.edl
|
|
155
|
+
tests/edm/fixtures/mmv_multiline.edl
|
|
156
|
+
tests/edm/fixtures/png.edl
|
|
157
|
+
tests/edm/fixtures/radio.edl
|
|
158
|
+
tests/edm/fixtures/shell_cmd.edl
|
|
159
|
+
tests/edm/fixtures/textdsp.edl
|
|
160
|
+
tests/edm/fixtures/unknown.edl
|
|
161
|
+
tests/edm/fixtures/visibility.edl
|
|
128
162
|
tests/ir/__init__.py
|
|
129
163
|
tests/ir/conftest.py
|
|
130
164
|
tests/ir/test_ir_builder.py
|
|
@@ -136,7 +170,8 @@ tests/ir/test_ir_registry.py
|
|
|
136
170
|
tests/ir/test_ir_schema.py
|
|
137
171
|
tests/ir/test_ir_transforms.py
|
|
138
172
|
tests/ui/__init__.py
|
|
173
|
+
tests/ui/test_byte_and_related.py
|
|
139
174
|
tests/ui/test_ir_adapter.py
|
|
140
|
-
tests/ui/
|
|
141
|
-
tests/ui/fixtures/
|
|
142
|
-
tests/ui/fixtures/
|
|
175
|
+
tests/ui/fixtures/basic_widgets.ui
|
|
176
|
+
tests/ui/fixtures/byte_and_related.ui
|
|
177
|
+
tests/ui/fixtures/newly_supported.ui
|
|
@@ -41,19 +41,44 @@
|
|
|
41
41
|
"tests/ir/test_ir_schema.py",
|
|
42
42
|
"tests/ui/__init__.py",
|
|
43
43
|
"tests/ui/test_ir_adapter.py",
|
|
44
|
-
"tests/ui/
|
|
45
|
-
"tests/ui/fixtures/
|
|
46
|
-
"tests/ui/fixtures/
|
|
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",
|
|
47
48
|
"tests/edm/test_converter_helpers.py",
|
|
48
49
|
"tests/edm/test_ir_adapter.py",
|
|
49
50
|
"tests/edm/test_parser_helpers.py",
|
|
51
|
+
"tests/edm/test_integration_combined.py",
|
|
50
52
|
"tests/edm/test_parser.py",
|
|
51
53
|
"tests/edm/test_converter.py",
|
|
52
|
-
"tests/edm/
|
|
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",
|
|
53
58
|
"tests/edm/test_visibility_rules.py",
|
|
54
|
-
"tests/edm/fixtures/
|
|
55
|
-
"tests/edm/fixtures/
|
|
56
|
-
"tests/edm/fixtures/
|
|
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",
|
|
57
82
|
"app/resources/file_minus.png",
|
|
58
83
|
"app/resources/folder_search.png",
|
|
59
84
|
"app/resources/play_circle_outline.png",
|
|
@@ -91,6 +116,9 @@
|
|
|
91
116
|
"pydmconverter/ir/registry.py",
|
|
92
117
|
"pydmconverter/ir/base.py",
|
|
93
118
|
"pydmconverter/ir/data/screen-ir.schema.json",
|
|
119
|
+
"pydmconverter/ir/data/VENDORED_SCHEMA.md",
|
|
120
|
+
"pydmconverter/ir/data/widget-registry/qwidget-container.json",
|
|
121
|
+
"pydmconverter/ir/data/widget-registry/rectangle.json",
|
|
94
122
|
"pydmconverter/ir/data/widget-registry/pv-byte-led.json",
|
|
95
123
|
"pydmconverter/ir/data/widget-registry/pv-label.json",
|
|
96
124
|
"pydmconverter/ir/data/widget-registry/pv-button.json",
|
|
@@ -99,16 +127,23 @@
|
|
|
99
127
|
"pydmconverter/ir/data/widget-registry/text-label.json",
|
|
100
128
|
"pydmconverter/ir/data/widget-registry/pv-slider.json",
|
|
101
129
|
"pydmconverter/ir/data/widget-registry/tabs.json",
|
|
130
|
+
"pydmconverter/ir/data/widget-registry/ellipse.json",
|
|
102
131
|
"pydmconverter/ir/data/widget-registry/pv-checkbox.json",
|
|
103
132
|
"pydmconverter/ir/data/widget-registry/group-box.json",
|
|
104
133
|
"pydmconverter/ir/data/widget-registry/image-view.json",
|
|
134
|
+
"pydmconverter/ir/data/widget-registry/group.json",
|
|
105
135
|
"pydmconverter/ir/data/widget-registry/pv-enum-combobox.json",
|
|
136
|
+
"pydmconverter/ir/data/widget-registry/line.json",
|
|
106
137
|
"pydmconverter/ir/data/widget-registry/pv-text-input.json",
|
|
107
138
|
"pydmconverter/ir/data/widget-registry/.beaver-snapshot-sha",
|
|
108
139
|
"pydmconverter/ir/data/widget-registry/scroll-area.json",
|
|
109
140
|
"pydmconverter/ir/data/widget-registry/absolute-canvas.json",
|
|
110
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",
|
|
111
144
|
"pydmconverter/ir/data/widget-registry/embedded-display.json",
|
|
145
|
+
"pydmconverter/ir/data/widget-registry/waveform-plot.json",
|
|
146
|
+
"pydmconverter/ir/data/widget-registry/shell-command-button.json",
|
|
112
147
|
"pydmconverter/ir/data/widget-registry/related-display-button.json",
|
|
113
148
|
"pydmconverter/ir/data/widget-registry/pv-radio-group.json",
|
|
114
149
|
"pydmconverter/ir/data/widget-registry/pv-led.json",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"""EDM -> Qt class and prop name maps for the IR adapter
|
|
1
|
+
"""EDM -> Qt class and prop name maps for the IR adapter.
|
|
2
2
|
|
|
3
3
|
The shared IR builder resolves widgets and props by Qt vocabulary (the keys
|
|
4
4
|
Beaver's ``qtMapping``/``qtPropMap`` use). The EDM front-end therefore translates
|
|
@@ -13,8 +13,8 @@ from __future__ import annotations
|
|
|
13
13
|
|
|
14
14
|
from typing import Any
|
|
15
15
|
|
|
16
|
-
# EDM class (lowercased) -> Qt class the registry knows
|
|
17
|
-
# else falls through to an unknown-widget node
|
|
16
|
+
# EDM class (lowercased) -> Qt class the registry knows; everything
|
|
17
|
+
# else falls through to an unknown-widget node.
|
|
18
18
|
EDM_TO_QT_CLASS: dict[str, str] = {
|
|
19
19
|
"activextextclass": "PyDMLabel", # split to QLabel (text-label) when static, see resolve_qt_class
|
|
20
20
|
"textupdateclass": "PyDMLabel",
|
|
@@ -31,13 +31,35 @@ EDM_TO_QT_CLASS: dict[str, str] = {
|
|
|
31
31
|
"activetriumfsliderclass": "PyDMSlider",
|
|
32
32
|
"activechoicebuttonclass": "PyDMEnumComboBox",
|
|
33
33
|
"activepipclass": "PyDMEmbeddedDisplay",
|
|
34
|
-
#
|
|
34
|
+
# byte indicator / related display
|
|
35
35
|
"byteclass": "PyDMByteIndicator",
|
|
36
36
|
"relateddisplayclass": "PyDMRelatedDisplayButton",
|
|
37
|
+
# graphics
|
|
38
|
+
"activerectangleclass": "PyDMDrawingRectangle",
|
|
39
|
+
"activecircleclass": "PyDMDrawingEllipse",
|
|
40
|
+
"activelineclass": "PyDMDrawingPolyline",
|
|
41
|
+
"activearcclass": "PyDMDrawingArc",
|
|
42
|
+
"activebarclass": "PyDMScaleIndicator",
|
|
43
|
+
"activeslacbarclass": "PyDMScaleIndicator",
|
|
44
|
+
"activevsbarclass": "PyDMScaleIndicator",
|
|
45
|
+
# text / buttons / indicators
|
|
46
|
+
"activextextdspclassnoedit": "PyDMLabel", # the parser strips the colon from activeXTextDspClass:noedit
|
|
47
|
+
"shellcmdclass": "QPushButton",
|
|
48
|
+
"activeexitbuttonclass": "QPushButton",
|
|
49
|
+
"activepngclass": "PyDMDrawingImage",
|
|
50
|
+
"activemeterclass": "PyDMAnalogIndicator",
|
|
51
|
+
"activeindicatorclass": "PyDMScaleIndicator",
|
|
52
|
+
"activeradiobuttonclass": "PyDMEnumButton",
|
|
53
|
+
"activefreezebuttonclass": "QPushButton", # corpus: 0/102 samples carry a controlPv (freeze/unfreeze is local-only)
|
|
54
|
+
"activerampbuttonclass": "PyDMPushButton",
|
|
55
|
+
"activeupdownbuttonclass": "PyDMPushButton",
|
|
56
|
+
"mmvclass": "PyDMSlider",
|
|
57
|
+
"multilinetextentryclass": "PyDMLineEdit",
|
|
58
|
+
# menuMuxClass deliberately absent: macro-muxing needs a design; stays unknown-widget.
|
|
37
59
|
}
|
|
38
60
|
|
|
39
61
|
# EDM attributes that name a PV channel.
|
|
40
|
-
EDM_CHANNEL_ATTRS = ("controlPv", "indicatorPv", "readPv", "alarmPv", "pv", "filePv", "nullPv")
|
|
62
|
+
EDM_CHANNEL_ATTRS = ("controlPv", "indicatorPv", "readPv", "alarmPv", "pv", "filePv", "nullPv", "ctrl1Pv")
|
|
41
63
|
|
|
42
64
|
# EDM attribute name -> Qt prop name (the key Beaver's qtPropMap consumes).
|
|
43
65
|
EDM_TO_QT_PROP: dict[str, str] = {
|
|
@@ -49,6 +71,7 @@ EDM_TO_QT_PROP: dict[str, str] = {
|
|
|
49
71
|
"pv": "channel",
|
|
50
72
|
"filePv": "channel",
|
|
51
73
|
"nullPv": "channel",
|
|
74
|
+
"ctrl1Pv": "channel", # mmvClass
|
|
52
75
|
# text / labels (Beaver maps "text" -> text/label per widget)
|
|
53
76
|
"value": "text",
|
|
54
77
|
"label": "text",
|
|
@@ -57,6 +80,7 @@ EDM_TO_QT_PROP: dict[str, str] = {
|
|
|
57
80
|
"precision": "precision",
|
|
58
81
|
"showUnits": "showUnits",
|
|
59
82
|
"displayFormat": "displayFormat",
|
|
83
|
+
"format": "displayFormat", # activeXTextDspClass(:noedit) EDM format string
|
|
60
84
|
# alarm sensitivity
|
|
61
85
|
"fgAlarm": "alarmSensitiveContent",
|
|
62
86
|
"alarmSensitiveContent": "alarmSensitiveContent",
|
|
@@ -74,13 +98,30 @@ EDM_TO_QT_PROP: dict[str, str] = {
|
|
|
74
98
|
"fileName": "filename",
|
|
75
99
|
"symbols": "macros",
|
|
76
100
|
"macro": "macros",
|
|
77
|
-
# related display
|
|
101
|
+
# related display: a list of target files -> "filenames" (firstOf -> file)
|
|
78
102
|
"displayFileName": "filenames",
|
|
79
|
-
# byte indicator
|
|
103
|
+
# byte indicator
|
|
80
104
|
"numBits": "numBits",
|
|
81
105
|
"shift": "shift",
|
|
82
106
|
# alignment
|
|
83
107
|
"fontAlign": "alignment",
|
|
108
|
+
# colors (resolved to hex by the adapter)
|
|
109
|
+
"fgColor": "foregroundColor",
|
|
110
|
+
"bgColor": "backgroundColor",
|
|
111
|
+
# British-spelled EDM keys emitted by some classes (multiLineTextEntryClass, mmvClass et al.)
|
|
112
|
+
"fgColour": "foregroundColor",
|
|
113
|
+
"bgColour": "backgroundColor",
|
|
114
|
+
# drawing
|
|
115
|
+
"lineColor": "penColor",
|
|
116
|
+
"fillColor": "brushColor",
|
|
117
|
+
"lineWidth": "penWidth",
|
|
118
|
+
"lineStyle": "penStyle",
|
|
119
|
+
"fill": "brushFill",
|
|
120
|
+
"startAngle": "startAngle",
|
|
121
|
+
"totalAngle": "spanAngle",
|
|
122
|
+
# bar/scale range
|
|
123
|
+
"min": "userMinimum",
|
|
124
|
+
"max": "userMaximum",
|
|
84
125
|
}
|
|
85
126
|
|
|
86
127
|
|