Ok, yet another widget. One of our cameras has an adjustable ADC gain that is approximated by a piecewise linear function – that is, points connected with lines. Because, I am the poor soul who should come up with a GUI to control this camera, I decided to visualize this in an intuitive way rather than falling back to boring spin buttons.
I remembered GIMP’s curve tool which is exactly what I had in mind, although
the widget’s purpose is a bit different. Therefore, I pulled out the useful bits
and mashed it together in the
EggPiecewiseLinearView widget (yeah, what a name
At first, the view managed the data but I noticed soon, that this won’t scale
very well. I refactored the data point management into its own
class just to recognize that this is also not exactly following the MVC pattern,
because in the perfect MVC world the model (in my case the data points) would
not control themselves. However, the Gtk people don’t seem to be active
proponents of the MVC pattern either: The
relationship is pretty similar to
So, after a short discussion with a friend, I though to myself: “Ok, it’s not
worth it, adding another layer”.
Using the widget and the data store is self-explanatory and somewhat documented by the test program.