The computed duration is no more pessimistic, for a few reasons.
- the main one is that it does not take retraction into account
- Z moves are not taken into account either
- arcs are not supported
- the acceleration code seems to estimate acceleration time correctly but is
wrong for deceleration
So instead of telling the user this estimation is pessimistic, let's just tell
them this is an estimate.
Okai, this may not make that much sense. However when removing the mainloop,
pronterface was segfaulting when Python was freeing everything. As a
workaround, explictely destroy the wx application, which will cleanly free
things in order, while Python might destroy wx things in a random order.
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