As far as I understand, a wxFrame needs a wxPanel child, but we shouldn't
reparent this wxPanel to some other container. As a consequence, I created an
initial wxPanel for the gwindow wxFrame and assigned it the previous sizer
(instead of using the gviz panel as the wxFrame's panel).
Not sure why it wasn't segfaulting on my other systems, though.
The gauges options is a CLI parameter as having it as an option would be
too painful to handle for now.
Argument parsing has been improved so that pronterface can add its own CLI
parameters in addition to pronsole's ones.
This commit mostly removes unused code and cleans some things up.
The main contribution is that instead of calling repaint() and Refresh(), we
now only mark the canvas as dirty and call Refresh(), which will do the repaint
just-in-time. This speeds things a lot when quickly changing layers or zooming,
as it does not repaint once per keyboard/mouse event but once per actual
Refresh, which makes it much smoother.
FWIW, on my test system with my test GCode loading time goes down from 5.7s to
2.3s between b3a673bc97 and this commit, that's almost 60% gone.
However, there is still a lot of room for functional improvements :
- I don't think the roundtrip through the target array is useful
- There's no handling of relative coordinates (neither for position nor for e)
- The arcs drawing code might be wrong
- The stlview bits are not enabled and probably have to be looked at and updated
Estimation duration now uses the already parsed GCode instead of reparsing it.
It also computes a per layer duration estimation which can probably be used to
produce better ETAs.
The only difference is that it does not compute duration for Z layers changes, but it was probably super wrong already given how it is done (it only changes
the estimation by than 2s over 2 hours of print and 54 layers, and the feedrate
stuff mixes all the axes together).
I also detected a few potential issues in the code, which are marked by FIXMEs.