|
1 | | -## Unreleased |
| 1 | +## 3.1.0 - 2026-10-06 |
2 | 2 |
|
3 | 3 | ### Added |
4 | 4 |
|
| 5 | +- **Sizing the panes from your code.** `KChartWidget.paneHeights` sets the |
| 6 | + indicator panes' heights and `volumeHeight` the volume pane's. Heights are |
| 7 | + used as given — past `ChartStyle.maxPaneHeight` if asked — and cut back only |
| 8 | + when a pane would squeeze the candles out of the box. Null leaves the heights |
| 9 | + to the chart, as before. While a list is given the host owns the heights: a |
| 10 | + drag or a controller call is reported through `onPaneHeightsChanged`, and the |
| 11 | + pane moves when the list is passed back. |
| 12 | +- **Maximizing a pane.** `KChartController.maximizePane`, `maximizeVolume`, |
| 13 | + `restorePanes` and `toggleMaximizePane` stretch one pane over the chart, the |
| 14 | + candles keeping a strip above it, for a "maximize this indicator" button. The |
| 15 | + stretch follows the chart's size and its own indicator through a reorder. |
| 16 | + `setPaneHeight`, `resetPaneHeights`, `paneHeights`, `maximizedPane` and |
| 17 | + `isVolumeMaximized` complete the set. |
| 18 | +- **`KChartWidget.paneSizeMode`** chooses how the chart's parts are sized. |
| 19 | + `PaneSizeMode.heights` is the default and the behaviour so far. |
| 20 | + `PaneSizeMode.ratios` splits the height by `paneRatios` — the candles, the |
| 21 | + volume pane, then each indicator pane, so `[3, 1, 2]` is half, a sixth and a |
| 22 | + third — and holds the split as the chart is resized. `PaneSizeMode.custom` |
| 23 | + lets the user lay the chart out: `KChartController.editPanes` shows a line |
| 24 | + between each two parts to drag between the smallest and largest height each |
| 25 | + may take, the layout is kept as proportions, and `onPaneRatiosChanged` |
| 26 | + reports it for saving. `finishEditingPanes`, `toggleEditPanes` and |
| 27 | + `isEditingPanes` complete the set. Both modes need a bounded height and no |
| 28 | + `mBaseHeight`. |
5 | 29 | - **`ChartStyle.gridColumnMode`** chooses where the grid's vertical lines go. |
6 | 30 | `GridColumnMode.dateTicks` (the default, and the behaviour so far) rules a line |
7 | 31 | wherever a candle crosses a time bucket; with only a few candles in view that |
|
14 | 38 | - **`ChartStyle.gridDashPattern`** dashes the grid lines with a list of on/off |
15 | 39 | lengths, e.g. `[4, 3]`. Null is solid; an empty list or a non-positive length |
16 | 40 | is read as solid. |
17 | | -- The example app has switches for all three, and a chip per pane that maximizes it. |
18 | | -- **`KChartWidget.paneHeights`** sizes the indicator panes from the host, and |
19 | | - `KChartWidget.volumeHeight` the volume pane. Heights are used as given — past |
20 | | - `ChartStyle.maxPaneHeight` if asked — and cut back only when a pane would |
21 | | - squeeze the candles out of the box. Null leaves the heights to the chart, as |
22 | | - before. While a list is given the host owns the heights: a drag or a controller |
23 | | - call is reported through `onPaneHeightsChanged` and the pane moves when the |
24 | | - list is passed back. |
25 | | -- **`KChartController.maximizePane`, `maximizeVolume`, `restorePanes`, |
26 | | - `toggleMaximizePane`, |
27 | | - `setPaneHeight`, `resetPaneHeights`, `paneHeights` and `maximizedPane`** drive |
28 | | - the same from code, for a "maximize this indicator" button. A maximized pane |
29 | | - follows the chart's size and its own indicator through a reorder. |
30 | | -- **`KChartWidget.paneSizeMode`** chooses how the chart's parts are sized. |
31 | | - `PaneSizeMode.heights` is the default and the behaviour so far. `ratios` splits |
32 | | - the height by `paneRatios` — the candles, the volume pane, then each indicator |
33 | | - pane, so `[3, 1, 2]` is half, a sixth and a third — and holds the split as the |
34 | | - chart is resized. `custom` lets the user lay the chart out: `KChartController. |
35 | | - editPanes` shows a line between each two parts to drag between the smallest and |
36 | | - largest height each may take, the layout is kept as proportions, and |
37 | | - `onPaneRatiosChanged` reports it for saving. Both need a bounded height and no |
38 | | - `mBaseHeight`; the example app has a switch for them. |
39 | | -- `KChartController.editPanes`, `finishEditingPanes`, `toggleEditPanes` and |
40 | | - `isEditingPanes` drive the editing; `KChartHost` has two more members for it. |
| 41 | +- The example app has switches for the grid options, a sizing chooser for the |
| 42 | + panes, an Edit layout chip, and a chip to maximize each pane and the volume. |
| 43 | + |
| 44 | +### Changed |
| 45 | + |
| 46 | +- Dragged pane heights move with their pane when `onReorderPane` reorders the |
| 47 | + indicators, instead of staying at their position. |
41 | 48 | - `ChartStyle.minPaneHeight` is held at 32 or more when a pane is dragged or |
42 | 49 | maximized around, so a pane can never be made so small that its edge cannot be |
43 | 50 | grabbed to make it bigger again. |
44 | | -- Dragged pane heights now move with their pane when `onReorderPane` reorders |
45 | | - the indicators, instead of staying at their position. |
46 | | -- `KChartHost` has nine new members for the above; only an app that implements |
47 | | - it itself (a test double) needs to add them. |
| 51 | +- `KChartHost` has nine new members for the above. Only an app that implements |
| 52 | + it itself, such as a test double, needs to add them. |
48 | 53 |
|
49 | 54 | ## 3.0.0 - 2026-09-19 |
50 | 55 |
|
|
0 commit comments