scitex 2.7.0__py3-none-any.whl → 2.8.1__py3-none-any.whl
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.
- scitex/__init__.py +6 -2
- scitex/__version__.py +1 -1
- scitex/audio/README.md +52 -0
- scitex/audio/__init__.py +384 -0
- scitex/audio/__main__.py +129 -0
- scitex/audio/_tts.py +334 -0
- scitex/audio/engines/__init__.py +44 -0
- scitex/audio/engines/base.py +275 -0
- scitex/audio/engines/elevenlabs_engine.py +143 -0
- scitex/audio/engines/gtts_engine.py +162 -0
- scitex/audio/engines/pyttsx3_engine.py +131 -0
- scitex/audio/mcp_server.py +757 -0
- scitex/bridge/_helpers.py +1 -1
- scitex/bridge/_plt_vis.py +1 -1
- scitex/bridge/_stats_vis.py +1 -1
- scitex/dev/plt/__init__.py +272 -0
- scitex/dev/plt/plot_mpl_axhline.py +28 -0
- scitex/dev/plt/plot_mpl_axhspan.py +28 -0
- scitex/dev/plt/plot_mpl_axvline.py +28 -0
- scitex/dev/plt/plot_mpl_axvspan.py +28 -0
- scitex/dev/plt/plot_mpl_bar.py +29 -0
- scitex/dev/plt/plot_mpl_barh.py +29 -0
- scitex/dev/plt/plot_mpl_boxplot.py +28 -0
- scitex/dev/plt/plot_mpl_contour.py +31 -0
- scitex/dev/plt/plot_mpl_contourf.py +31 -0
- scitex/dev/plt/plot_mpl_errorbar.py +30 -0
- scitex/dev/plt/plot_mpl_eventplot.py +28 -0
- scitex/dev/plt/plot_mpl_fill.py +30 -0
- scitex/dev/plt/plot_mpl_fill_between.py +31 -0
- scitex/dev/plt/plot_mpl_hexbin.py +28 -0
- scitex/dev/plt/plot_mpl_hist.py +28 -0
- scitex/dev/plt/plot_mpl_hist2d.py +28 -0
- scitex/dev/plt/plot_mpl_imshow.py +29 -0
- scitex/dev/plt/plot_mpl_pcolormesh.py +31 -0
- scitex/dev/plt/plot_mpl_pie.py +29 -0
- scitex/dev/plt/plot_mpl_plot.py +29 -0
- scitex/dev/plt/plot_mpl_quiver.py +31 -0
- scitex/dev/plt/plot_mpl_scatter.py +28 -0
- scitex/dev/plt/plot_mpl_stackplot.py +31 -0
- scitex/dev/plt/plot_mpl_stem.py +29 -0
- scitex/dev/plt/plot_mpl_step.py +29 -0
- scitex/dev/plt/plot_mpl_violinplot.py +28 -0
- scitex/dev/plt/plot_sns_barplot.py +29 -0
- scitex/dev/plt/plot_sns_boxplot.py +29 -0
- scitex/dev/plt/plot_sns_heatmap.py +28 -0
- scitex/dev/plt/plot_sns_histplot.py +29 -0
- scitex/dev/plt/plot_sns_kdeplot.py +29 -0
- scitex/dev/plt/plot_sns_lineplot.py +31 -0
- scitex/dev/plt/plot_sns_scatterplot.py +29 -0
- scitex/dev/plt/plot_sns_stripplot.py +29 -0
- scitex/dev/plt/plot_sns_swarmplot.py +29 -0
- scitex/dev/plt/plot_sns_violinplot.py +29 -0
- scitex/dev/plt/plot_stx_bar.py +29 -0
- scitex/dev/plt/plot_stx_barh.py +29 -0
- scitex/dev/plt/plot_stx_box.py +28 -0
- scitex/dev/plt/plot_stx_boxplot.py +28 -0
- scitex/dev/plt/plot_stx_conf_mat.py +28 -0
- scitex/dev/plt/plot_stx_contour.py +31 -0
- scitex/dev/plt/plot_stx_ecdf.py +28 -0
- scitex/dev/plt/plot_stx_errorbar.py +30 -0
- scitex/dev/plt/plot_stx_fill_between.py +31 -0
- scitex/dev/plt/plot_stx_fillv.py +28 -0
- scitex/dev/plt/plot_stx_heatmap.py +28 -0
- scitex/dev/plt/plot_stx_image.py +28 -0
- scitex/dev/plt/plot_stx_imshow.py +28 -0
- scitex/dev/plt/plot_stx_joyplot.py +28 -0
- scitex/dev/plt/plot_stx_kde.py +28 -0
- scitex/dev/plt/plot_stx_line.py +28 -0
- scitex/dev/plt/plot_stx_mean_ci.py +28 -0
- scitex/dev/plt/plot_stx_mean_std.py +28 -0
- scitex/dev/plt/plot_stx_median_iqr.py +28 -0
- scitex/dev/plt/plot_stx_raster.py +28 -0
- scitex/dev/plt/plot_stx_rectangle.py +28 -0
- scitex/dev/plt/plot_stx_scatter.py +29 -0
- scitex/dev/plt/plot_stx_shaded_line.py +29 -0
- scitex/dev/plt/plot_stx_violin.py +28 -0
- scitex/dev/plt/plot_stx_violinplot.py +28 -0
- scitex/diagram/README.md +197 -0
- scitex/diagram/__init__.py +48 -0
- scitex/diagram/_compile.py +312 -0
- scitex/diagram/_diagram.py +355 -0
- scitex/diagram/_presets.py +173 -0
- scitex/diagram/_schema.py +182 -0
- scitex/diagram/_split.py +278 -0
- scitex/fig/__init__.py +352 -0
- scitex/{vis → fig}/backend/_parser.py +1 -1
- scitex/{vis → fig}/canvas.py +1 -1
- scitex/{vis → fig}/editor/__init__.py +5 -2
- scitex/{vis → fig}/editor/_dearpygui_editor.py +1 -1
- scitex/{vis → fig}/editor/_defaults.py +70 -5
- scitex/{vis → fig}/editor/_mpl_editor.py +1 -1
- scitex/{vis → fig}/editor/_qt_editor.py +182 -2
- scitex/{vis → fig}/editor/_tkinter_editor.py +1 -1
- scitex/fig/editor/edit/__init__.py +50 -0
- scitex/fig/editor/edit/backend_detector.py +109 -0
- scitex/fig/editor/edit/bundle_resolver.py +240 -0
- scitex/fig/editor/edit/editor_launcher.py +239 -0
- scitex/fig/editor/edit/manual_handler.py +53 -0
- scitex/fig/editor/edit/panel_loader.py +232 -0
- scitex/fig/editor/edit/path_resolver.py +67 -0
- scitex/fig/editor/flask_editor/_bbox.py +1299 -0
- scitex/fig/editor/flask_editor/_core.py +1429 -0
- scitex/{vis → fig}/editor/flask_editor/_plotter.py +38 -4
- scitex/fig/editor/flask_editor/_renderer.py +813 -0
- scitex/fig/editor/flask_editor/static/css/base/reset.css +41 -0
- scitex/fig/editor/flask_editor/static/css/base/typography.css +16 -0
- scitex/fig/editor/flask_editor/static/css/base/variables.css +85 -0
- scitex/fig/editor/flask_editor/static/css/components/buttons.css +217 -0
- scitex/fig/editor/flask_editor/static/css/components/context-menu.css +93 -0
- scitex/fig/editor/flask_editor/static/css/components/dropdown.css +57 -0
- scitex/fig/editor/flask_editor/static/css/components/forms.css +112 -0
- scitex/fig/editor/flask_editor/static/css/components/modal.css +59 -0
- scitex/fig/editor/flask_editor/static/css/components/sections.css +212 -0
- scitex/fig/editor/flask_editor/static/css/features/canvas.css +176 -0
- scitex/fig/editor/flask_editor/static/css/features/element-inspector.css +190 -0
- scitex/fig/editor/flask_editor/static/css/features/loading.css +59 -0
- scitex/fig/editor/flask_editor/static/css/features/overlay.css +45 -0
- scitex/fig/editor/flask_editor/static/css/features/panel-grid.css +95 -0
- scitex/fig/editor/flask_editor/static/css/features/selection.css +101 -0
- scitex/fig/editor/flask_editor/static/css/features/statistics.css +138 -0
- scitex/fig/editor/flask_editor/static/css/index.css +31 -0
- scitex/fig/editor/flask_editor/static/css/layout/container.css +7 -0
- scitex/fig/editor/flask_editor/static/css/layout/controls.css +56 -0
- scitex/fig/editor/flask_editor/static/css/layout/preview.css +78 -0
- scitex/fig/editor/flask_editor/static/js/alignment/axis.js +314 -0
- scitex/fig/editor/flask_editor/static/js/alignment/basic.js +107 -0
- scitex/fig/editor/flask_editor/static/js/alignment/distribute.js +54 -0
- scitex/fig/editor/flask_editor/static/js/canvas/canvas.js +172 -0
- scitex/fig/editor/flask_editor/static/js/canvas/dragging.js +258 -0
- scitex/fig/editor/flask_editor/static/js/canvas/resize.js +48 -0
- scitex/fig/editor/flask_editor/static/js/canvas/selection.js +71 -0
- scitex/fig/editor/flask_editor/static/js/core/api.js +288 -0
- scitex/fig/editor/flask_editor/static/js/core/state.js +143 -0
- scitex/fig/editor/flask_editor/static/js/core/utils.js +245 -0
- scitex/fig/editor/flask_editor/static/js/dev/element-inspector.js +992 -0
- scitex/fig/editor/flask_editor/static/js/editor/bbox.js +339 -0
- scitex/fig/editor/flask_editor/static/js/editor/element-drag.js +286 -0
- scitex/fig/editor/flask_editor/static/js/editor/overlay.js +371 -0
- scitex/fig/editor/flask_editor/static/js/editor/preview.js +293 -0
- scitex/fig/editor/flask_editor/static/js/main.js +426 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/context-menu.js +152 -0
- scitex/fig/editor/flask_editor/static/js/shortcuts/keyboard.js +265 -0
- scitex/fig/editor/flask_editor/static/js/ui/controls.js +184 -0
- scitex/fig/editor/flask_editor/static/js/ui/download.js +57 -0
- scitex/fig/editor/flask_editor/static/js/ui/help.js +100 -0
- scitex/fig/editor/flask_editor/static/js/ui/theme.js +34 -0
- scitex/fig/editor/flask_editor/templates/__init__.py +123 -0
- scitex/fig/editor/flask_editor/templates/_html.py +852 -0
- scitex/fig/editor/flask_editor/templates/_scripts.py +4933 -0
- scitex/fig/editor/flask_editor/templates/_styles.py +1658 -0
- scitex/{vis → fig}/io/__init__.py +13 -1
- scitex/fig/io/_bundle.py +1058 -0
- scitex/{vis → fig}/io/_canvas.py +1 -1
- scitex/{vis → fig}/io/_data.py +1 -1
- scitex/{vis → fig}/io/_export.py +1 -1
- scitex/{vis → fig}/io/_load.py +1 -1
- scitex/{vis → fig}/io/_panel.py +1 -1
- scitex/{vis → fig}/io/_save.py +1 -1
- scitex/{vis → fig}/model/__init__.py +1 -1
- scitex/{vis → fig}/model/_annotations.py +1 -1
- scitex/{vis → fig}/model/_axes.py +1 -1
- scitex/{vis → fig}/model/_figure.py +1 -1
- scitex/{vis → fig}/model/_guides.py +1 -1
- scitex/{vis → fig}/model/_plot.py +1 -1
- scitex/{vis → fig}/model/_styles.py +1 -1
- scitex/{vis → fig}/utils/__init__.py +1 -1
- scitex/io/__init__.py +22 -26
- scitex/io/_bundle.py +493 -0
- scitex/io/_flush.py +5 -2
- scitex/io/_load.py +98 -0
- scitex/io/_load_modules/_H5Explorer.py +5 -2
- scitex/io/_load_modules/_canvas.py +2 -2
- scitex/io/_load_modules/_image.py +3 -4
- scitex/io/_load_modules/_txt.py +4 -2
- scitex/io/_metadata.py +34 -324
- scitex/io/_metadata_modules/__init__.py +46 -0
- scitex/io/_metadata_modules/_embed.py +70 -0
- scitex/io/_metadata_modules/_read.py +64 -0
- scitex/io/_metadata_modules/_utils.py +79 -0
- scitex/io/_metadata_modules/embed_metadata_jpeg.py +74 -0
- scitex/io/_metadata_modules/embed_metadata_pdf.py +53 -0
- scitex/io/_metadata_modules/embed_metadata_png.py +26 -0
- scitex/io/_metadata_modules/embed_metadata_svg.py +62 -0
- scitex/io/_metadata_modules/read_metadata_jpeg.py +57 -0
- scitex/io/_metadata_modules/read_metadata_pdf.py +51 -0
- scitex/io/_metadata_modules/read_metadata_png.py +39 -0
- scitex/io/_metadata_modules/read_metadata_svg.py +44 -0
- scitex/io/_qr_utils.py +5 -3
- scitex/io/_save.py +548 -30
- scitex/io/_save_modules/_canvas.py +3 -3
- scitex/io/_save_modules/_image.py +5 -9
- scitex/io/_save_modules/_tex.py +7 -4
- scitex/io/_zip_bundle.py +439 -0
- scitex/io/utils/h5_to_zarr.py +11 -9
- scitex/msword/__init__.py +255 -0
- scitex/msword/profiles.py +357 -0
- scitex/msword/reader.py +753 -0
- scitex/msword/utils.py +289 -0
- scitex/msword/writer.py +362 -0
- scitex/plt/__init__.py +5 -2
- scitex/plt/_subplots/_AxesWrapper.py +6 -6
- scitex/plt/_subplots/_AxisWrapper.py +15 -9
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/__init__.py +36 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_labels.py +264 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_metadata.py +213 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin/_visual.py +128 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/__init__.py +59 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_base.py +34 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_scientific.py +593 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_statistical.py +654 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin/_stx_aliases.py +527 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_RawMatplotlibMixin.py +321 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/__init__.py +33 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_base.py +152 -0
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin/_wrappers.py +600 -0
- scitex/plt/_subplots/_AxisWrapperMixins/__init__.py +79 -5
- scitex/plt/_subplots/_FigWrapper.py +6 -6
- scitex/plt/_subplots/_SubplotsWrapper.py +28 -18
- scitex/plt/_subplots/_export_as_csv.py +35 -5
- scitex/plt/_subplots/_export_as_csv_formatters/__init__.py +8 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_annotate.py +10 -21
- scitex/plt/_subplots/_export_as_csv_formatters/_format_eventplot.py +18 -7
- scitex/plt/_subplots/_export_as_csv_formatters/_format_imshow2d.py +28 -12
- scitex/plt/_subplots/_export_as_csv_formatters/_format_matshow.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_imshow.py +13 -1
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_kde.py +12 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_plot_scatter.py +10 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_quiver.py +10 -4
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_jointplot.py +18 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_lineplot.py +44 -36
- scitex/plt/_subplots/_export_as_csv_formatters/_format_sns_pairplot.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_streamplot.py +11 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_bar.py +84 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_barh.py +85 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_conf_mat.py +14 -3
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_contour.py +54 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_ecdf.py +14 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_errorbar.py +120 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_heatmap.py +16 -6
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_image.py +29 -19
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_imshow.py +63 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_joyplot.py +22 -5
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_ci.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_mean_std.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_median_iqr.py +18 -14
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_raster.py +10 -2
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter.py +51 -0
- scitex/plt/_subplots/_export_as_csv_formatters/_format_stx_scatter_hist.py +18 -9
- scitex/plt/ax/_plot/_stx_ecdf.py +4 -2
- scitex/plt/gallery/_generate.py +421 -14
- scitex/plt/io/__init__.py +53 -0
- scitex/plt/io/_bundle.py +490 -0
- scitex/plt/io/_layered_bundle.py +1343 -0
- scitex/plt/styles/SCITEX_STYLE.yaml +26 -0
- scitex/plt/styles/__init__.py +14 -0
- scitex/plt/styles/presets.py +78 -0
- scitex/plt/utils/__init__.py +13 -1
- scitex/plt/utils/_collect_figure_metadata.py +10 -14
- scitex/plt/utils/_configure_mpl.py +6 -18
- scitex/plt/utils/_crop.py +32 -14
- scitex/plt/utils/_csv_column_naming.py +54 -0
- scitex/plt/utils/_figure_mm.py +116 -1
- scitex/plt/utils/_hitmap.py +1643 -0
- scitex/plt/utils/metadata/__init__.py +25 -0
- scitex/plt/utils/metadata/_core.py +9 -10
- scitex/plt/utils/metadata/_dimensions.py +6 -3
- scitex/plt/utils/metadata/_editable_export.py +405 -0
- scitex/plt/utils/metadata/_geometry_extraction.py +570 -0
- scitex/schema/__init__.py +109 -16
- scitex/schema/_canvas.py +1 -1
- scitex/schema/_plot.py +1015 -0
- scitex/schema/_stats.py +2 -2
- scitex/stats/__init__.py +117 -0
- scitex/stats/io/__init__.py +29 -0
- scitex/stats/io/_bundle.py +156 -0
- scitex/tex/__init__.py +4 -0
- scitex/tex/_export.py +890 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/METADATA +11 -1
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/RECORD +294 -170
- scitex/io/memo.md +0 -2827
- scitex/plt/REQUESTS.md +0 -191
- scitex/plt/_subplots/TODO.md +0 -53
- scitex/plt/_subplots/_AxisWrapperMixins/_AdjustmentMixin.py +0 -559
- scitex/plt/_subplots/_AxisWrapperMixins/_MatplotlibPlotMixin.py +0 -1609
- scitex/plt/_subplots/_AxisWrapperMixins/_SeabornMixin.py +0 -447
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_between.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/area/fill_betweenx.json +0 -88
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fill_between.json +0 -103
- scitex/plt/templates/research-master/scitex/vis/gallery/area/stx_fillv.json +0 -106
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/bar.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/barh.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/boxplot.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_bar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_barh.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_box.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_boxplot.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violin.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/stx_violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/categorical/violinplot.json +0 -91
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contour.json +0 -97
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/contourf.json +0 -98
- scitex/plt/templates/research-master/scitex/vis/gallery/contour/stx_contour.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist.json +0 -101
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/hist2d.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_ecdf.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_joyplot.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/distribution/stx_kde.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/imshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/matshow.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_conf_mat.json +0 -83
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_heatmap.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_image.json +0 -121
- scitex/plt/templates/research-master/scitex/vis/gallery/grid/stx_imshow.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/line/plot.json +0 -110
- scitex/plt/templates/research-master/scitex/vis/gallery/line/step.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_line.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/line/stx_shaded_line.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/hexbin.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/scatter.json +0 -95
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stem.json +0 -92
- scitex/plt/templates/research-master/scitex/vis/gallery/scatter/stx_scatter.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/special/pie.json +0 -94
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_raster.json +0 -109
- scitex/plt/templates/research-master/scitex/vis/gallery/special/stx_rectangle.json +0 -108
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/errorbar.json +0 -93
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_errorbar.json +0 -84
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_ci.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_mean_std.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/statistical/stx_median_iqr.json +0 -96
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/quiver.json +0 -99
- scitex/plt/templates/research-master/scitex/vis/gallery/vector/streamplot.json +0 -100
- scitex/vis/__init__.py +0 -177
- scitex/vis/editor/_edit.py +0 -390
- scitex/vis/editor/flask_editor/_bbox.py +0 -529
- scitex/vis/editor/flask_editor/_core.py +0 -168
- scitex/vis/editor/flask_editor/_renderer.py +0 -393
- scitex/vis/editor/flask_editor/templates/__init__.py +0 -33
- scitex/vis/editor/flask_editor/templates/_html.py +0 -513
- scitex/vis/editor/flask_editor/templates/_scripts.py +0 -1261
- scitex/vis/editor/flask_editor/templates/_styles.py +0 -739
- /scitex/{vis → fig}/README.md +0 -0
- /scitex/{vis → fig}/backend/__init__.py +0 -0
- /scitex/{vis → fig}/backend/_export.py +0 -0
- /scitex/{vis → fig}/backend/_render.py +0 -0
- /scitex/{vis → fig}/docs/CANVAS_ARCHITECTURE.md +0 -0
- /scitex/{vis → fig}/editor/_flask_editor.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/__init__.py +0 -0
- /scitex/{vis → fig}/editor/flask_editor/_utils.py +0 -0
- /scitex/{vis → fig}/io/_directory.py +0 -0
- /scitex/{vis → fig}/model/_plot_types.py +0 -0
- /scitex/{vis → fig}/utils/_defaults.py +0 -0
- /scitex/{vis → fig}/utils/_validate.py +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/WHEEL +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/entry_points.txt +0 -0
- {scitex-2.7.0.dist-info → scitex-2.8.1.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,513 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
# -*- coding: utf-8 -*-
|
|
3
|
-
# File: ./src/scitex/vis/editor/flask_editor/templates/html.py
|
|
4
|
-
"""HTML structure for the Flask editor UI."""
|
|
5
|
-
|
|
6
|
-
HTML_BODY = """
|
|
7
|
-
<div class="container">
|
|
8
|
-
<div class="preview">
|
|
9
|
-
<div class="preview-wrapper">
|
|
10
|
-
<div class="preview-container" id="preview-container">
|
|
11
|
-
<img id="preview-img" src="" alt="Figure Preview">
|
|
12
|
-
<svg id="hover-overlay" class="hover-overlay"></svg>
|
|
13
|
-
</div>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
<div class="controls">
|
|
17
|
-
<div class="controls-header">
|
|
18
|
-
<div>
|
|
19
|
-
<h1>SciTeX Editor</h1>
|
|
20
|
-
<div class="filename">{{ filename }}</div>
|
|
21
|
-
</div>
|
|
22
|
-
<button class="theme-toggle" onclick="toggleTheme()" title="Toggle light/dark mode">
|
|
23
|
-
<span id="theme-icon">☾</span>
|
|
24
|
-
</button>
|
|
25
|
-
</div>
|
|
26
|
-
|
|
27
|
-
<div class="controls-body">
|
|
28
|
-
<!-- Selected Element Section (Dynamic) -->
|
|
29
|
-
<div class="section" id="section-selected" style="display: none;">
|
|
30
|
-
<div class="section-header section-toggle" onclick="toggleSection(this)">
|
|
31
|
-
<span id="selected-element-title">Selected: None</span>
|
|
32
|
-
</div>
|
|
33
|
-
<div class="section-content">
|
|
34
|
-
<div id="selected-element-info" class="selected-info">
|
|
35
|
-
<div class="element-type-badge" id="element-type-badge"></div>
|
|
36
|
-
<div class="element-axis-info" id="element-axis-info"></div>
|
|
37
|
-
</div>
|
|
38
|
-
|
|
39
|
-
<!-- Trace/Line Properties -->
|
|
40
|
-
<div id="selected-trace-props" class="element-props" style="display: none;">
|
|
41
|
-
<div class="field">
|
|
42
|
-
<label>Label</label>
|
|
43
|
-
<input type="text" id="sel-trace-label" placeholder="Trace label">
|
|
44
|
-
</div>
|
|
45
|
-
<div class="field">
|
|
46
|
-
<label>Color</label>
|
|
47
|
-
<div class="color-field">
|
|
48
|
-
<input type="color" id="sel-trace-color" value="#1f77b4">
|
|
49
|
-
<input type="text" id="sel-trace-color-text" value="#1f77b4">
|
|
50
|
-
</div>
|
|
51
|
-
</div>
|
|
52
|
-
<div class="field-row">
|
|
53
|
-
<div class="field">
|
|
54
|
-
<label>Line Width (pt)</label>
|
|
55
|
-
<input type="number" id="sel-trace-linewidth" value="1.0" min="0.1" max="5" step="0.1">
|
|
56
|
-
</div>
|
|
57
|
-
<div class="field">
|
|
58
|
-
<label>Line Style</label>
|
|
59
|
-
<select id="sel-trace-linestyle">
|
|
60
|
-
<option value="-">Solid</option>
|
|
61
|
-
<option value="--">Dashed</option>
|
|
62
|
-
<option value="-.">Dash-dot</option>
|
|
63
|
-
<option value=":">Dotted</option>
|
|
64
|
-
</select>
|
|
65
|
-
</div>
|
|
66
|
-
</div>
|
|
67
|
-
<div class="field-row">
|
|
68
|
-
<div class="field">
|
|
69
|
-
<label>Marker</label>
|
|
70
|
-
<select id="sel-trace-marker">
|
|
71
|
-
<option value="">None</option>
|
|
72
|
-
<option value="o">Circle</option>
|
|
73
|
-
<option value="s">Square</option>
|
|
74
|
-
<option value="^">Triangle</option>
|
|
75
|
-
<option value="D">Diamond</option>
|
|
76
|
-
<option value="x">X</option>
|
|
77
|
-
<option value="+">Plus</option>
|
|
78
|
-
</select>
|
|
79
|
-
</div>
|
|
80
|
-
<div class="field">
|
|
81
|
-
<label>Marker Size</label>
|
|
82
|
-
<input type="number" id="sel-trace-markersize" value="4" min="1" max="20" step="0.5">
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
<div class="field">
|
|
86
|
-
<label>Alpha (0-1)</label>
|
|
87
|
-
<input type="range" id="sel-trace-alpha" min="0" max="1" step="0.1" value="1">
|
|
88
|
-
</div>
|
|
89
|
-
</div>
|
|
90
|
-
|
|
91
|
-
<!-- Scatter Properties -->
|
|
92
|
-
<div id="selected-scatter-props" class="element-props" style="display: none;">
|
|
93
|
-
<div class="field">
|
|
94
|
-
<label>Color</label>
|
|
95
|
-
<div class="color-field">
|
|
96
|
-
<input type="color" id="sel-scatter-color" value="#1f77b4">
|
|
97
|
-
<input type="text" id="sel-scatter-color-text" value="#1f77b4">
|
|
98
|
-
</div>
|
|
99
|
-
</div>
|
|
100
|
-
<div class="field-row">
|
|
101
|
-
<div class="field">
|
|
102
|
-
<label>Marker Size</label>
|
|
103
|
-
<input type="number" id="sel-scatter-size" value="20" min="1" max="200" step="1">
|
|
104
|
-
</div>
|
|
105
|
-
<div class="field">
|
|
106
|
-
<label>Marker</label>
|
|
107
|
-
<select id="sel-scatter-marker">
|
|
108
|
-
<option value="o">Circle</option>
|
|
109
|
-
<option value="s">Square</option>
|
|
110
|
-
<option value="^">Triangle</option>
|
|
111
|
-
<option value="D">Diamond</option>
|
|
112
|
-
<option value="x">X</option>
|
|
113
|
-
</select>
|
|
114
|
-
</div>
|
|
115
|
-
</div>
|
|
116
|
-
<div class="field">
|
|
117
|
-
<label>Alpha (0-1)</label>
|
|
118
|
-
<input type="range" id="sel-scatter-alpha" min="0" max="1" step="0.1" value="0.7">
|
|
119
|
-
</div>
|
|
120
|
-
<div class="field">
|
|
121
|
-
<label>Edge Color</label>
|
|
122
|
-
<div class="color-field">
|
|
123
|
-
<input type="color" id="sel-scatter-edgecolor" value="#000000">
|
|
124
|
-
<input type="text" id="sel-scatter-edgecolor-text" value="#000000">
|
|
125
|
-
</div>
|
|
126
|
-
</div>
|
|
127
|
-
</div>
|
|
128
|
-
|
|
129
|
-
<!-- Fill Properties -->
|
|
130
|
-
<div id="selected-fill-props" class="element-props" style="display: none;">
|
|
131
|
-
<div class="field">
|
|
132
|
-
<label>Fill Color</label>
|
|
133
|
-
<div class="color-field">
|
|
134
|
-
<input type="color" id="sel-fill-color" value="#1f77b4">
|
|
135
|
-
<input type="text" id="sel-fill-color-text" value="#1f77b4">
|
|
136
|
-
</div>
|
|
137
|
-
</div>
|
|
138
|
-
<div class="field">
|
|
139
|
-
<label>Alpha (0-1)</label>
|
|
140
|
-
<input type="range" id="sel-fill-alpha" min="0" max="1" step="0.05" value="0.3">
|
|
141
|
-
</div>
|
|
142
|
-
</div>
|
|
143
|
-
|
|
144
|
-
<!-- Bar Properties -->
|
|
145
|
-
<div id="selected-bar-props" class="element-props" style="display: none;">
|
|
146
|
-
<div class="field">
|
|
147
|
-
<label>Face Color</label>
|
|
148
|
-
<div class="color-field">
|
|
149
|
-
<input type="color" id="sel-bar-facecolor" value="#1f77b4">
|
|
150
|
-
<input type="text" id="sel-bar-facecolor-text" value="#1f77b4">
|
|
151
|
-
</div>
|
|
152
|
-
</div>
|
|
153
|
-
<div class="field">
|
|
154
|
-
<label>Edge Color</label>
|
|
155
|
-
<div class="color-field">
|
|
156
|
-
<input type="color" id="sel-bar-edgecolor" value="#000000">
|
|
157
|
-
<input type="text" id="sel-bar-edgecolor-text" value="#000000">
|
|
158
|
-
</div>
|
|
159
|
-
</div>
|
|
160
|
-
<div class="field">
|
|
161
|
-
<label>Alpha (0-1)</label>
|
|
162
|
-
<input type="range" id="sel-bar-alpha" min="0" max="1" step="0.1" value="1">
|
|
163
|
-
</div>
|
|
164
|
-
</div>
|
|
165
|
-
|
|
166
|
-
<!-- Label/Text Properties -->
|
|
167
|
-
<div id="selected-label-props" class="element-props" style="display: none;">
|
|
168
|
-
<div class="field">
|
|
169
|
-
<label>Text</label>
|
|
170
|
-
<input type="text" id="sel-label-text" placeholder="Label text">
|
|
171
|
-
</div>
|
|
172
|
-
<div class="field-row">
|
|
173
|
-
<div class="field">
|
|
174
|
-
<label>Font Size (pt)</label>
|
|
175
|
-
<input type="number" id="sel-label-fontsize" value="7" min="4" max="24" step="1">
|
|
176
|
-
</div>
|
|
177
|
-
<div class="field">
|
|
178
|
-
<label>Font Weight</label>
|
|
179
|
-
<select id="sel-label-fontweight">
|
|
180
|
-
<option value="normal">Normal</option>
|
|
181
|
-
<option value="bold">Bold</option>
|
|
182
|
-
</select>
|
|
183
|
-
</div>
|
|
184
|
-
</div>
|
|
185
|
-
<div class="field">
|
|
186
|
-
<label>Color</label>
|
|
187
|
-
<div class="color-field">
|
|
188
|
-
<input type="color" id="sel-label-color" value="#000000">
|
|
189
|
-
<input type="text" id="sel-label-color-text" value="#000000">
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
</div>
|
|
193
|
-
|
|
194
|
-
<!-- Panel Properties -->
|
|
195
|
-
<div id="selected-panel-props" class="element-props" style="display: none;">
|
|
196
|
-
<div class="field">
|
|
197
|
-
<label>Panel Title</label>
|
|
198
|
-
<input type="text" id="sel-panel-title" placeholder="Panel title">
|
|
199
|
-
</div>
|
|
200
|
-
<div class="field-row">
|
|
201
|
-
<div class="field">
|
|
202
|
-
<label>X Label</label>
|
|
203
|
-
<input type="text" id="sel-panel-xlabel" placeholder="X axis">
|
|
204
|
-
</div>
|
|
205
|
-
<div class="field">
|
|
206
|
-
<label>Y Label</label>
|
|
207
|
-
<input type="text" id="sel-panel-ylabel" placeholder="Y axis">
|
|
208
|
-
</div>
|
|
209
|
-
</div>
|
|
210
|
-
<div class="field">
|
|
211
|
-
<label>Background Color</label>
|
|
212
|
-
<div class="color-field">
|
|
213
|
-
<input type="color" id="sel-panel-facecolor" value="#ffffff">
|
|
214
|
-
<input type="text" id="sel-panel-facecolor-text" value="#ffffff">
|
|
215
|
-
</div>
|
|
216
|
-
</div>
|
|
217
|
-
<label class="checkbox-field">
|
|
218
|
-
<input type="checkbox" id="sel-panel-transparent" checked>
|
|
219
|
-
<span>Transparent</span>
|
|
220
|
-
</label>
|
|
221
|
-
<label class="checkbox-field">
|
|
222
|
-
<input type="checkbox" id="sel-panel-grid">
|
|
223
|
-
<span>Show Grid</span>
|
|
224
|
-
</label>
|
|
225
|
-
</div>
|
|
226
|
-
|
|
227
|
-
<button class="btn btn-primary" onclick="applySelectedElementChanges()" style="margin-top: 10px;">Apply Changes</button>
|
|
228
|
-
</div>
|
|
229
|
-
</div>
|
|
230
|
-
|
|
231
|
-
<!-- Labels Section -->
|
|
232
|
-
<div class="section" id="section-labels">
|
|
233
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Labels</div>
|
|
234
|
-
<div class="section-content collapsed">
|
|
235
|
-
<div class="field">
|
|
236
|
-
<label>Title</label>
|
|
237
|
-
<input type="text" id="title" placeholder="Figure title">
|
|
238
|
-
</div>
|
|
239
|
-
<div class="field-row">
|
|
240
|
-
<div class="field">
|
|
241
|
-
<label>X Label (Left)</label>
|
|
242
|
-
<input type="text" id="xlabel" placeholder="X axis label">
|
|
243
|
-
</div>
|
|
244
|
-
<div class="field">
|
|
245
|
-
<label>Y Label (Right)</label>
|
|
246
|
-
<input type="text" id="ylabel" placeholder="Y axis label">
|
|
247
|
-
</div>
|
|
248
|
-
</div>
|
|
249
|
-
</div>
|
|
250
|
-
</div>
|
|
251
|
-
|
|
252
|
-
<!-- Axis Limits Section -->
|
|
253
|
-
<div class="section" id="section-axis-limits">
|
|
254
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Axis Limits</div>
|
|
255
|
-
<div class="section-content collapsed">
|
|
256
|
-
<div class="field-row">
|
|
257
|
-
<div class="field">
|
|
258
|
-
<label>X (Left)</label>
|
|
259
|
-
<div class="field-row" style="gap: 4px; margin-top: 4px;">
|
|
260
|
-
<input type="number" id="xmin" step="any" placeholder="Min">
|
|
261
|
-
<input type="number" id="xmax" step="any" placeholder="Max">
|
|
262
|
-
</div>
|
|
263
|
-
</div>
|
|
264
|
-
<div class="field">
|
|
265
|
-
<label>Y (Right)</label>
|
|
266
|
-
<div class="field-row" style="gap: 4px; margin-top: 4px;">
|
|
267
|
-
<input type="number" id="ymin" step="any" placeholder="Min">
|
|
268
|
-
<input type="number" id="ymax" step="any" placeholder="Max">
|
|
269
|
-
</div>
|
|
270
|
-
</div>
|
|
271
|
-
</div>
|
|
272
|
-
</div>
|
|
273
|
-
</div>
|
|
274
|
-
|
|
275
|
-
<!-- Traces Section -->
|
|
276
|
-
<div class="section" id="section-traces">
|
|
277
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Traces</div>
|
|
278
|
-
<div class="section-content collapsed">
|
|
279
|
-
<div class="traces-list" id="traces-list">
|
|
280
|
-
<!-- Dynamically populated -->
|
|
281
|
-
</div>
|
|
282
|
-
<div class="field" style="margin-top: 10px;">
|
|
283
|
-
<label>Default Line Width (pt)</label>
|
|
284
|
-
<input type="number" id="linewidth" value="1.0" min="0.1" max="5" step="0.1">
|
|
285
|
-
</div>
|
|
286
|
-
</div>
|
|
287
|
-
</div>
|
|
288
|
-
|
|
289
|
-
<!-- Legend Section -->
|
|
290
|
-
<div class="section" id="section-legend">
|
|
291
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Legend</div>
|
|
292
|
-
<div class="section-content collapsed">
|
|
293
|
-
<label class="checkbox-field">
|
|
294
|
-
<input type="checkbox" id="legend_visible" checked>
|
|
295
|
-
<span>Show Legend</span>
|
|
296
|
-
</label>
|
|
297
|
-
<div class="field">
|
|
298
|
-
<label>Position</label>
|
|
299
|
-
<select id="legend_loc" onchange="toggleCustomLegendPosition()">
|
|
300
|
-
<option value="best">Best</option>
|
|
301
|
-
<option value="upper right">Upper Right</option>
|
|
302
|
-
<option value="upper left">Upper Left</option>
|
|
303
|
-
<option value="lower right">Lower Right</option>
|
|
304
|
-
<option value="lower left">Lower Left</option>
|
|
305
|
-
<option value="center right">Center Right</option>
|
|
306
|
-
<option value="center left">Center Left</option>
|
|
307
|
-
<option value="upper center">Upper Center</option>
|
|
308
|
-
<option value="lower center">Lower Center</option>
|
|
309
|
-
<option value="center">Center</option>
|
|
310
|
-
<option value="custom">Custom (Drag)</option>
|
|
311
|
-
</select>
|
|
312
|
-
</div>
|
|
313
|
-
<div id="custom-legend-coords" class="field-row" style="display: none;">
|
|
314
|
-
<div class="field">
|
|
315
|
-
<label>X (0-1)</label>
|
|
316
|
-
<input type="number" id="legend_x" value="0.5" min="0" max="1" step="0.01">
|
|
317
|
-
</div>
|
|
318
|
-
<div class="field">
|
|
319
|
-
<label>Y (0-1)</label>
|
|
320
|
-
<input type="number" id="legend_y" value="0.5" min="0" max="1" step="0.01">
|
|
321
|
-
</div>
|
|
322
|
-
</div>
|
|
323
|
-
<label class="checkbox-field">
|
|
324
|
-
<input type="checkbox" id="legend_frameon">
|
|
325
|
-
<span>Show Frame</span>
|
|
326
|
-
</label>
|
|
327
|
-
<div class="field">
|
|
328
|
-
<label>Font Size (pt)</label>
|
|
329
|
-
<input type="number" id="legend_fontsize" value="6" min="4" max="16" step="1">
|
|
330
|
-
</div>
|
|
331
|
-
</div>
|
|
332
|
-
</div>
|
|
333
|
-
|
|
334
|
-
<!-- Ticks Section -->
|
|
335
|
-
<div class="section" id="section-ticks">
|
|
336
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Ticks</div>
|
|
337
|
-
<div class="section-content collapsed">
|
|
338
|
-
<div class="field-row">
|
|
339
|
-
<div class="field">
|
|
340
|
-
<label>X (Left)</label>
|
|
341
|
-
<label class="checkbox-field" style="margin-top: 4px;">
|
|
342
|
-
<input type="checkbox" id="hide_x_ticks">
|
|
343
|
-
<span>Hide</span>
|
|
344
|
-
</label>
|
|
345
|
-
<input type="number" id="x_n_ticks" value="4" min="2" max="10" step="1" placeholder="N Ticks" title="Number of ticks">
|
|
346
|
-
</div>
|
|
347
|
-
<div class="field">
|
|
348
|
-
<label>Y (Right)</label>
|
|
349
|
-
<label class="checkbox-field" style="margin-top: 4px;">
|
|
350
|
-
<input type="checkbox" id="hide_y_ticks">
|
|
351
|
-
<span>Hide</span>
|
|
352
|
-
</label>
|
|
353
|
-
<input type="number" id="y_n_ticks" value="4" min="2" max="10" step="1" placeholder="N Ticks" title="Number of ticks">
|
|
354
|
-
</div>
|
|
355
|
-
</div>
|
|
356
|
-
<div class="field-row">
|
|
357
|
-
<div class="field">
|
|
358
|
-
<label>Font Size (pt)</label>
|
|
359
|
-
<input type="number" id="tick_fontsize" value="7" min="4" max="16" step="1">
|
|
360
|
-
</div>
|
|
361
|
-
<div class="field">
|
|
362
|
-
<label>Direction</label>
|
|
363
|
-
<select id="tick_direction">
|
|
364
|
-
<option value="out">Out</option>
|
|
365
|
-
<option value="in">In</option>
|
|
366
|
-
<option value="inout">Both</option>
|
|
367
|
-
</select>
|
|
368
|
-
</div>
|
|
369
|
-
</div>
|
|
370
|
-
<div class="field-row">
|
|
371
|
-
<div class="field">
|
|
372
|
-
<label>Tick Length (mm)</label>
|
|
373
|
-
<input type="number" id="tick_length" value="0.8" min="0.1" max="3" step="0.1">
|
|
374
|
-
</div>
|
|
375
|
-
<div class="field">
|
|
376
|
-
<label>Tick Width (mm)</label>
|
|
377
|
-
<input type="number" id="tick_width" value="0.2" min="0.05" max="1" step="0.05">
|
|
378
|
-
</div>
|
|
379
|
-
</div>
|
|
380
|
-
</div>
|
|
381
|
-
</div>
|
|
382
|
-
|
|
383
|
-
<!-- Style Section -->
|
|
384
|
-
<div class="section" id="section-style">
|
|
385
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Style</div>
|
|
386
|
-
<div class="section-content collapsed">
|
|
387
|
-
<label class="checkbox-field">
|
|
388
|
-
<input type="checkbox" id="grid">
|
|
389
|
-
<span>Show Grid</span>
|
|
390
|
-
</label>
|
|
391
|
-
<label class="checkbox-field">
|
|
392
|
-
<input type="checkbox" id="hide_top_spine" checked>
|
|
393
|
-
<span>Hide Top Spine</span>
|
|
394
|
-
</label>
|
|
395
|
-
<label class="checkbox-field">
|
|
396
|
-
<input type="checkbox" id="hide_right_spine" checked>
|
|
397
|
-
<span>Hide Right Spine</span>
|
|
398
|
-
</label>
|
|
399
|
-
<div class="field-row">
|
|
400
|
-
<div class="field">
|
|
401
|
-
<label>Axis Width (mm)</label>
|
|
402
|
-
<input type="number" id="axis_width" value="0.2" min="0.05" max="1" step="0.05">
|
|
403
|
-
</div>
|
|
404
|
-
<div class="field">
|
|
405
|
-
<label>Label Size (pt)</label>
|
|
406
|
-
<input type="number" id="axis_fontsize" value="7" min="4" max="16" step="1">
|
|
407
|
-
</div>
|
|
408
|
-
</div>
|
|
409
|
-
<div class="field">
|
|
410
|
-
<label>Background</label>
|
|
411
|
-
<div class="bg-toggle">
|
|
412
|
-
<button class="bg-btn" id="bg-white" onclick="setBackgroundType('white')" title="White background">
|
|
413
|
-
<span class="bg-preview white"></span>
|
|
414
|
-
<span>White</span>
|
|
415
|
-
</button>
|
|
416
|
-
<button class="bg-btn active" id="bg-transparent" onclick="setBackgroundType('transparent')" title="Transparent background">
|
|
417
|
-
<span class="bg-preview transparent"></span>
|
|
418
|
-
<span>Transparent</span>
|
|
419
|
-
</button>
|
|
420
|
-
<button class="bg-btn" id="bg-black" onclick="setBackgroundType('black')" title="Black background">
|
|
421
|
-
<span class="bg-preview black"></span>
|
|
422
|
-
<span>Black</span>
|
|
423
|
-
</button>
|
|
424
|
-
</div>
|
|
425
|
-
</div>
|
|
426
|
-
<input type="hidden" id="facecolor" value="#ffffff">
|
|
427
|
-
<input type="hidden" id="transparent" value="true">
|
|
428
|
-
</div>
|
|
429
|
-
</div>
|
|
430
|
-
|
|
431
|
-
<!-- Dimensions Section -->
|
|
432
|
-
<div class="section" id="section-dimensions">
|
|
433
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Dimensions</div>
|
|
434
|
-
<div class="section-content collapsed">
|
|
435
|
-
<div class="field" style="margin-bottom: 8px;">
|
|
436
|
-
<label>Unit</label>
|
|
437
|
-
<div class="unit-toggle">
|
|
438
|
-
<button class="unit-btn active" id="unit-mm" onclick="setDimensionUnit('mm')">mm</button>
|
|
439
|
-
<button class="unit-btn" id="unit-inch" onclick="setDimensionUnit('inch')">inch</button>
|
|
440
|
-
</div>
|
|
441
|
-
</div>
|
|
442
|
-
<div class="field-row">
|
|
443
|
-
<div class="field">
|
|
444
|
-
<label id="fig_width_label">Width (mm)</label>
|
|
445
|
-
<input type="number" id="fig_width" value="80" min="10" max="300" step="1">
|
|
446
|
-
</div>
|
|
447
|
-
<div class="field">
|
|
448
|
-
<label id="fig_height_label">Height (mm)</label>
|
|
449
|
-
<input type="number" id="fig_height" value="68" min="10" max="300" step="1">
|
|
450
|
-
</div>
|
|
451
|
-
</div>
|
|
452
|
-
<div class="field">
|
|
453
|
-
<label>DPI</label>
|
|
454
|
-
<input type="number" id="dpi" value="300" min="72" max="600" step="1">
|
|
455
|
-
</div>
|
|
456
|
-
</div>
|
|
457
|
-
</div>
|
|
458
|
-
|
|
459
|
-
<!-- Annotations Section -->
|
|
460
|
-
<div class="section" id="section-annotations">
|
|
461
|
-
<div class="section-header section-toggle collapsed" onclick="toggleSection(this)">Annotations</div>
|
|
462
|
-
<div class="section-content collapsed">
|
|
463
|
-
<div class="field">
|
|
464
|
-
<label>Text</label>
|
|
465
|
-
<input type="text" id="annot-text" placeholder="Annotation text">
|
|
466
|
-
</div>
|
|
467
|
-
<div class="field-row">
|
|
468
|
-
<div class="field">
|
|
469
|
-
<label>X (0-1)</label>
|
|
470
|
-
<input type="number" id="annot-x" value="0.5" min="0" max="1" step="0.05">
|
|
471
|
-
</div>
|
|
472
|
-
<div class="field">
|
|
473
|
-
<label>Y (0-1)</label>
|
|
474
|
-
<input type="number" id="annot-y" value="0.5" min="0" max="1" step="0.05">
|
|
475
|
-
</div>
|
|
476
|
-
<div class="field">
|
|
477
|
-
<label>Size</label>
|
|
478
|
-
<input type="number" id="annot-size" value="8" min="4" max="24" step="1">
|
|
479
|
-
</div>
|
|
480
|
-
</div>
|
|
481
|
-
<button class="btn btn-secondary" onclick="addAnnotation()">Add Annotation</button>
|
|
482
|
-
<div class="annotations-list" id="annotations-list"></div>
|
|
483
|
-
</div>
|
|
484
|
-
</div>
|
|
485
|
-
|
|
486
|
-
<!-- Actions Section -->
|
|
487
|
-
<div class="section">
|
|
488
|
-
<div class="section-header">Actions</div>
|
|
489
|
-
<div class="field-row" style="align-items: center; margin-bottom: 8px;">
|
|
490
|
-
<div class="field" style="flex: 1;">
|
|
491
|
-
<label>Auto-Update</label>
|
|
492
|
-
<select id="auto_update_interval" onchange="setAutoUpdateInterval()">
|
|
493
|
-
<option value="0">Off</option>
|
|
494
|
-
<option value="500">Hot (0.5s)</option>
|
|
495
|
-
<option value="1000">Fast (1s)</option>
|
|
496
|
-
<option value="2000">Normal (2s)</option>
|
|
497
|
-
<option value="5000" selected>Slow (5s)</option>
|
|
498
|
-
</select>
|
|
499
|
-
</div>
|
|
500
|
-
<button class="btn btn-cta" onclick="updatePreview()" style="flex: 0; margin-left: 8px;">Update Now</button>
|
|
501
|
-
</div>
|
|
502
|
-
<button class="btn btn-primary" onclick="saveManual()" title="Ctrl+S">Save to .manual.json</button>
|
|
503
|
-
<button class="btn btn-secondary" onclick="resetOverrides()">Reset to Original</button>
|
|
504
|
-
</div>
|
|
505
|
-
|
|
506
|
-
<div class="status-bar" id="status">Ready</div>
|
|
507
|
-
</div>
|
|
508
|
-
</div>
|
|
509
|
-
</div>
|
|
510
|
-
"""
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
# EOF
|