Skip to content

Conversation

@jayhesselberth
Copy link
Member

Implement static image export with dimension control:

Python Backend:

  • Create squiggy/export.py with PNG/SVG export functions
  • Add export_plot_to_png() and export_plot_to_svg() for direct export
  • Add export_current_plot() wrapper for extension integration
  • Store last generated plot in global _last_plot_figure variable
  • Update all plotting functions to call set_current_plot()

TypeScript Extension:

  • Add squiggy.exportPlot command with export dialog UI
  • Prompt for format (PNG/SVG/HTML), dimensions, and DPI
  • Call Python export functions via PositronRuntime
  • Update SquigglePlotPanel with exportPlotWithPython() method

Features:

  • PNG export with configurable width, height, and DPI
  • SVG export with configurable width and height
  • HTML export (existing functionality, now integrated)
  • Interactive dialog for dimension control
  • Selenium auto-managed via Selenium Manager (>=4.6)

Dependencies:

  • Uses existing export optional dependency group in pyproject.toml
  • Requires pip install squiggy-positron[export] for PNG export
  • SVG export has no additional dependencies

User Experience:

  • Command palette: "Squiggy: Export Current Plot (PNG/SVG/HTML)"
  • Prompts for format selection
  • Prompts for dimensions (width, height)
  • Prompts for DPI (PNG only)
  • Shows save dialog with appropriate file extension
  • Displays success message with file path

Closes #132

claude and others added 2 commits November 8, 2025 13:34
Implement static image export with dimension control:

**Python Backend**:
- Create `squiggy/export.py` with PNG/SVG export functions
- Add `export_plot_to_png()` and `export_plot_to_svg()` for direct export
- Add `export_current_plot()` wrapper for extension integration
- Store last generated plot in global `_last_plot_figure` variable
- Update all plotting functions to call `set_current_plot()`

**TypeScript Extension**:
- Add `squiggy.exportPlot` command with export dialog UI
- Prompt for format (PNG/SVG/HTML), dimensions, and DPI
- Call Python export functions via PositronRuntime
- Update `SquigglePlotPanel` with `exportPlotWithPython()` method

**Features**:
- PNG export with configurable width, height, and DPI
- SVG export with configurable width and height
- HTML export (existing functionality, now integrated)
- Interactive dialog for dimension control
- Selenium auto-managed via Selenium Manager (>=4.6)

**Dependencies**:
- Uses existing `export` optional dependency group in pyproject.toml
- Requires `pip install squiggy-positron[export]` for PNG export
- SVG export has no additional dependencies

**User Experience**:
- Command palette: "Squiggy: Export Current Plot (PNG/SVG/HTML)"
- Prompts for format selection
- Prompts for dimensions (width, height)
- Prompts for DPI (PNG only)
- Shows save dialog with appropriate file extension
- Displays success message with file path

Closes #132
- Remove unused `io` import from squiggy/export.py
- Remove unused `svg_io` variable assignment
- Sort imports in squiggy/__init__.py
- Remove unused ExportOptions interface from plot-commands.ts
- Prefix unused parameters with _ in squiggy-plot-panel.ts

All tests pass and linting is clean.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add static image export (PNG/SVG) with dimension control for Bokeh plots

4 participants