We need to start breaking more stuff out into subprocedures in order to
reduce code repetition. We already have 'Ged' for the display-layer
agnostic stuff for editing a grid. So we'll add another big struct,
'Tui', which holds the curses-specific stuff.
This commit is only a partial conversion, but it still eliminates so
much redundant code that even after the struct declarations, the line
count is still reduced.
No longer necessary now that we have config files. Users who were using
commandline flags to have specific hardware setups can, in the meantime,
adjust XDG_CONFIG_HOME environment variable to cause orca to choose a
different config file. Eventually, we'll have a commandline option to
load a specific config file by path.
Passing --portmidi-list-devices or --portmidi-output-device now will
cause orca to exit with an error, and to give instructions on how to set
the device using the menu in orca.
`sdd` was the first attempt at making one of these
individually-allocated string management/utility things. I didn't end up
liking the design, so I tried again from scratch, and called the new one
`oso`. Let's see how that one turns out. The name might change again in
the future, though I feel better about the design of this one.
Used regular curses newwin WINDOWs before. Now uses newpad/subpad. The
buffers will be clipped correctly to the visible terminal area, and will
not be erased when the window is made too small and then resized to be
big again.