@@ -22,6 +22,7 @@ mod bootstrap;
2222mod layout;
2323mod model_catalog;
2424mod panel_state;
25+ mod point_layers;
2526mod state;
2627mod status;
2728mod style;
@@ -52,12 +53,13 @@ use self::i18n::file_import_icon_image;
5253use self :: i18n:: {
5354 actions_icon_image, center_origin_icon_image, clear_icon_image, clipboard_import_icon_image,
5455 family_label, fit_icon_image, fit_to_content_icon_image, github_mark_image,
55- language_flag_image, model_choice_label, open_formula_icon_image,
56- optimization_loss_metric_label, origin_bottom_left_icon_image, panels_icon_image,
57- param_init_method_disabled_label, param_init_method_label, param_init_method_name_en,
58- redo_icon_image, replay_pause_icon_image, replay_play_icon_image, reset_icon_image,
59- spline_extrapolation_label, spline_knot_strategy_label, spray_brush_label, stop_icon_image,
60- tool_icon_image, tr, undo_icon_image, view_icon_image,
56+ language_flag_image, layer_delete_icon_image, layer_duplicate_icon_image,
57+ layer_hidden_icon_image, layer_new_icon_image, layer_visible_icon_image, model_choice_label,
58+ open_formula_icon_image, optimization_loss_metric_label, origin_bottom_left_icon_image,
59+ panels_icon_image, param_init_method_disabled_label, param_init_method_label,
60+ param_init_method_name_en, redo_icon_image, replay_pause_icon_image, replay_play_icon_image,
61+ reset_icon_image, spline_extrapolation_label, spline_knot_strategy_label, spray_brush_label,
62+ stop_icon_image, tool_icon_image, tr, undo_icon_image, view_icon_image,
6163} ;
6264use self :: model_catalog:: {
6365 ModelChoice , ModelGroup , ResolvedModel , model_group, model_group_label,
@@ -78,7 +80,11 @@ use self::param_init::{
7880 rational_family,
7981} ;
8082use self :: plot_utils:: { fit_bounds_for_content, plot_domain} ;
81- use self :: points_state:: { ParsedPointsCache , PointsEditorState } ;
83+ use self :: point_layers:: { PointLayer , PointLayerId , PointLayersState } ;
84+ use self :: points_state:: {
85+ ParsedPointsCache , PointsEditorState , points_editor_cache_with_policy,
86+ set_points_editor_cache_from_valid_points,
87+ } ;
8288use self :: points_text:: {
8389 parse_f64, parse_points_from_clipboard_text, parse_points_text_cache, points_to_text,
8490} ;
@@ -145,6 +151,7 @@ const DIAGNOSTICS_PANEL_DEFAULT_HEIGHT: f32 = 230.0;
145151const DIAGNOSTICS_PANEL_MIN_HEIGHT : f32 = 120.0 ;
146152const LEFT_PANEL_DEFAULT_WIDTH : f32 = 320.0 ;
147153const LEFT_PANEL_MIN_WIDTH : f32 = 320.0 ;
154+ const LEFT_PANEL_MAX_WIDTH : f32 = 460.0 ;
148155const RIGHT_PANEL_DEFAULT_WIDTH : f32 = 280.0 ;
149156const RIGHT_PANEL_MIN_WIDTH : f32 = 280.0 ;
150157const POINTS_PARSE_DEBOUNCE_MS : u64 = 180 ;
0 commit comments