Skip to content

Conversation

@bgermann
Copy link
Contributor

@bgermann bgermann commented Feb 1, 2026

Replace all GooCanvas-based canvas widgets with GtkDrawingArea and Cairo for rendering satellite tracking visualizations:

  • gtk-polar-view: Polar plot for real-time satellite tracking
  • gtk-polar-plot: Polar plot for pass visualization
  • gtk-azel-plot: Azimuth/Elevation time plot
  • gtk-sat-map: World map with satellite positions and ground tracks
  • gtk-sky-glance: Timeline view of upcoming passes

Key changes:

  • Replace GooCanvasItemModel objects with coordinate fields in structs
  • Implement on_draw() callbacks using Cairo API for all rendering
  • Add manual hit testing for mouse interactions
  • Store render state (points, colors, positions) in widget structures
  • Use gtk_widget_queue_draw() to trigger redraws

Build system updates:

  • Remove goocanvas-2.0/3.0 pkg-config checks from configure.ac
  • Add explicit gtk+-3.0 dependency check
  • Update CI workflows and snap

This eliminates the external GooCanvas library dependency, reducing build complexity and improving portability. The application now only requires GTK+ 3.0 and standard system libraries.

Fixes: #369

Replace all GooCanvas-based canvas widgets with GtkDrawingArea and
Cairo for rendering satellite tracking visualizations:

- gtk-polar-view: Polar plot for real-time satellite tracking
- gtk-polar-plot: Polar plot for pass visualization
- gtk-azel-plot: Azimuth/Elevation time plot
- gtk-sat-map: World map with satellite positions and ground tracks
- gtk-sky-glance: Timeline view of upcoming passes

Key changes:
- Replace GooCanvasItemModel objects with coordinate fields in structs
- Implement on_draw() callbacks using Cairo API for all rendering
- Add manual hit testing for mouse interactions
- Store render state (points, colors, positions) in widget structures
- Use gtk_widget_queue_draw() to trigger redraws

Build system updates:
- Remove goocanvas-2.0/3.0 pkg-config checks from configure.ac
- Add explicit gtk+-3.0 dependency check
- Update CI workflows and snap

This eliminates the external GooCanvas library dependency, reducing
build complexity and improving portability. The application now only
requires GTK+ 3.0 and standard system libraries.

Fixes: #369
@csete
Copy link
Owner

csete commented Feb 2, 2026

Thank you much @bgermann - this is a huge help :)

I am going to merge it into the master branch. Although I noticed a few things that will have to be fixed, I think it is best to move ahead based on this work.

Thanks again!

@csete csete merged commit 2a57f14 into csete:master Feb 2, 2026
1 check passed
@bgermann bgermann deleted the no-goocanvas branch February 2, 2026 15:21
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.

Move away from goocanvas

2 participants