Each animation type has its own duration, rotation, travel and zoom settings.
Each multi-icon animation has its own convexity and extent settings.
It is achieved by using "{ type: value, ... }" dictionaries.
Settings.ui:
- Move thickness, length, and anchor from Style tab to Position tab.
Group together with position in the same frame.
schema:
- Remove unpublished panel-length and panel-anchor settings, replacing
them with panel-lengths and panel-anchors JSON objects (like
panel-positions).
- Remove unpublished anchor enum, since panel-anchors is being managed
by the extension in JSON, not typed by the schema.
- Deprecate panel-size in favour of new panel-sizes JSON, storing
per-monitor panel sizes.
- Mention that panel-position is deprecated.
Introduce panelSettings.js:
- Functions to fetch or set panel settings that are stored as JSON.
Grown from now-removed getSettingsPositions() in panelPositions.js.
prefs.js:
- Group together the different UI widget label and value refreshing
into method _updateWidgetSettingsForMonitor().
- Change multi-panel behaviour of _setAnchorLabels(). Previously, all
panels shared the same anchor setting, and so setAnchorLabels
considered all monitors. Now, panels are configured either
independently, or sometimes all together; set labels according to
orientation(s) of panel(s) being configured.
- Omitting preventTop handling in refactored _setPanelPosition()
method. Previously, it was written to set the first monitor's panel to
Pos.BOTTOM if the user clicked the Top position radio button, if
stockgs-keep-top-panel was also set. But the user can't activate the
Top button anyway if stockgs is set (likely implemented later).
panelManager.js:
- Removing panelPositions, as it is not needed any more.
* Moved length and anchor setting to Styles tab, as it is
an all-monitor setting currently.
* Changed length from spinbox to slider, and shortened label.
* Turned off anchor combobox sensitivity if length is 100%.
* Set anchor labels to the more intuitive "Left, Center, Right" and
"Top, Middle, Bottom" if all monitor panels are horizontal or
vertical. If monitors have panels in a mix of orientations, use
"Start, Middle, End". The schema retains the generic START, MIDDLE,
END.
* Changed "Panel Size" label to "Panel thickness" to more precisely
describe what is being set now that the panel can be changed in two
dimensions. "Panel thickness" and "Panel length" can
describe the sizing of the panel for either horizontal or vertical
orientations.
* Changed now-shortened Position label to "Anchor", to reduce
confusion with other Position setting, regarding which edge of the
screen.
Set the length of the panel according to a specified percent value, so
it can span only part of the screen edge.
Position the panel at the start, middle, or end of the screen edge, as
specified.
Tests okay with multiple monitors.
May also satisfy home-sweet-gnome/dash-to-panel#726