Hello,
I've been experimenting with Eto.Forms for a few days, and based on what I've seen so far it's quite an impressive technical achievement! I'm looking forward to getting some more experience with it.
One observation is that TableLayout seems to be missing a few things commonly found in table-based layout managers. For example:
1. Allowing a cell to span multiple rows or columns (as might be done with the RowSpan and ColumnSpan properties in a WinForms TableLayoutPanel)
2. Aligning a small control within a larger cell. TableLayout.AutoSize() effectively lets you do top-left and center alignment, but I haven't found a built-in way to do (for example) left-middle alignment.
Note 1: The wiki page on TableLayout references a TableLayout.Centered() helper, which doesn't seem to exist. However, TableLayout.AutoSized(..., centered: true) lets you accomplish something equivalent. Is this the intended behavior? If so, I can update the wiki.
Note 2: I've implemented trivial wrappers (based on TableLayout.AutoSized) for the 9 alignment options (TopLeft, MiddleLeft, BottomLeft, TopCenter, etc.) If these would be useful to include in Eto.Forms, I'd be happy to contribute them.
3. Setting proportional sizing weights to scaled rows/columns. Right now, extra weight is divided equally among rows/columns where "scale" is true. Are there limitations in some platforms that led to this being a boolean rather than a numeric weight?
I might be able to make some contributions to the layout code in Eto.Forms if there aren't already good methods for doing these things (or intentional reasons why they may not be implemented).
On another note: if I wanted to experiment with implementing other types of layout managers, would PixelLayout serve as a good foundation? This way you could implement the logic once (using PixelLayout to move and resize controls) and have it work across platforms rather than potentially having to wrap something different for each platform (such as the way that TableLayout uses TableLayoutPanel for the WinForms implementation, Gtk.Table for the GTK implementation, etc).
Thanks!
Kevin