wolfhece.assets.boxplot.editor ============================== .. py:module:: wolfhece.assets.boxplot.editor .. autoapi-nested-parse:: Graphical editor for boxplot chart asset configuration. Provides a wx.Frame-based UI for interactively editing multi-series boxplot data and display options. Changes are applied to a BoxplotZonesController and reflected in real-time on the map. Module Contents --------------- .. py:data:: GROUP_CANVAS :value: 'Boxplot - Canvas' .. py:data:: GROUP_AREA :value: 'Boxplot - Plot area' .. py:data:: GROUP_PLOT :value: 'Boxplot - Plot options' .. py:data:: GROUP_STYLE :value: 'Boxplot - Style' .. py:data:: GROUP_COLORS :value: 'Boxplot - Colors' .. py:class:: BoxplotZonesEditor(parent, controller: wolfhece.assets.boxplot.controller.BoxplotZonesController) Bases: :py:obj:`wx.Frame` .. autoapi-inheritance-diagram:: wolfhece.assets.boxplot.editor.BoxplotZonesEditor :parts: 1 :private-bases: wx editor window for BoxplotZonesController. Grid has one row per data series (Label | Values | Color | Count). The Wolf_Param panel controls canvas geometry, area fractions, plot options, and per-series colours/alpha. .. py:attribute:: controller .. py:attribute:: _updating_ui :value: False .. py:attribute:: _colors :type: list[tuple[int, int, int, int]] :value: [] .. py:attribute:: _wp .. py:attribute:: _live .. py:attribute:: _grid .. py:attribute:: _transform_map .. py:attribute:: _colorpicker .. py:attribute:: _alpha .. py:attribute:: _add .. py:attribute:: _del .. py:attribute:: _apply .. py:attribute:: _save_json .. py:attribute:: _load_json .. py:method:: _bind_events() -> None .. py:method:: _init_wolf_param_schema() -> None .. py:method:: _purge_color_params() -> None .. py:method:: _color_key(idx: int) -> str :staticmethod: .. py:method:: _alpha_key(idx: int) -> str :staticmethod: .. py:method:: _sync_color_param_schema(count: int) -> None .. py:method:: _set_wp_colors(colors: list[tuple[int, int, int, int]]) -> None .. py:method:: _read_wp_colors(count: int) -> list[tuple[int, int, int, int]] .. py:method:: _colors_from_controller(count: int) -> list[tuple[int, int, int, int]] .. py:method:: _sync_wp_colors_to_grid() -> None .. py:method:: _color_text(rgba: tuple) -> str .. py:method:: _set_row_color(row: int, rgba: tuple) -> None .. py:method:: _sync_picker_from_row(row: int) -> None .. py:method:: _parse_values(raw: str) -> list[float] :staticmethod: Parse comma-/space-separated floats from a grid cell. .. py:method:: _collect_grid_data() -> tuple[list[str], list[list[float]], list[tuple[int, int, int, int]]] .. py:method:: _read_wp() -> dict .. py:method:: _apply_controller() -> None .. py:method:: refresh_from_controller() -> None Reload all UI state from controller. .. py:method:: _maybe_live() -> None .. py:method:: on_prop_changed(event) .. py:method:: on_grid_changed(event) .. py:method:: on_grid_select(event) .. py:method:: on_grid_editor_hidden(event) .. py:method:: on_picker_changed(event) .. py:method:: on_transform_map(event) .. py:method:: on_add_row(event) .. py:method:: on_del_row(event) .. py:method:: on_apply(event) .. py:method:: on_save_json(event) .. py:method:: on_load_json(event)