Repository: bokeh/bokeh

Issue:
manual_grid layout example has lost it's core functionality in layout PR
The layout example `example/howto/layouts/manual_grid.py` used to end like this

```python
paragraph = Paragraph(text="We build up a grid plot manually. Try changing the mode yourself.")
MODE = 'fixed'
widgets = widgetbox([paragraph], sizing_mode=MODE)
row_1 = row([spacer_1, p1, spacer_2], sizing_mode=MODE)
row_2 = row([p2, p3, p4], sizing_mode=MODE)
layout = column([widgets, row_1, row_2], sizing_mode=MODE)

show(layout)
```

The point was to provide an example that would reformat itself under the different sizing modes for users to test out the effect of these different modes.

The new layout syntax is much cleaner, and I'm excited to see that the end now looks like this:

```python
paragraph = Paragraph(text="We build up a grid plot manually. Try changing the mode yourself.")

grid = GridBox(children=[(p1, 0, 1), (p2, 1, 0), (p3, 1, 1), (p4, 1, 2)])
layout = column([paragraph, grid])

show(layout)
```

But the core functionality of this example in accepting different sizing modes has been removed. It should be restored.


Discussion:
But to "try it out" the user had to find the source, edit a file, and re-run code. This is a high hurdle and some people just might be viewing the result and not even have the code to run at all (e.g a gallery). I never liked that text, for this reason. I'd rather expand or make similar examples to `plotting/file/sizing_mode.py` which have a live drop down to set different sizing modes and see immediately how things change 
Or perhaps other way of putting it, I would be happy to have the original text as a comment in the source code, where it is clear that the necessary change is a change in the code. Having it be actual text in the HTML page is confusing ("where/how do I change it??")
Switching it to an app with a live dropdown would be so much better. I'm pretty sure that didn't work / didn't work well when I made the original example.

Resolving patch:
diff --git a/examples/howto/layouts/manual_grid.py b/examples/howto/layouts/manual_grid.py
--- a/examples/howto/layouts/manual_grid.py
+++ b/examples/howto/layouts/manual_grid.py
@@ -1,13 +1,14 @@
 import numpy as np
+from bokeh.core.enums import SizingMode
 from bokeh.plotting import figure
-from bokeh.models import Paragraph, GridBox
+from bokeh.models import Paragraph, GridBox, Select
 from bokeh.layouts import column
 from bokeh.io import show
 
 N = 10
 x = np.linspace(0, 4 * np.pi, N)
 y = np.sin(x)
-options = dict(tools="", toolbar_location=None, plot_height=300, plot_width=300)
+options = dict(tools="", toolbar_location=None, plot_height=300, plot_width=300, sizing_mode="fixed")
 
 p1 = figure(title="Line (300 x 100)", **options)
 p1.plot_height = 100
@@ -23,9 +24,15 @@
 p4 = figure(title="Quad (300 x 300)", **options)
 p4.quad(x, x - 0.2, y, y - 0.2)
 
-paragraph = Paragraph(text="We build up a grid plot manually. Try changing the mode yourself.")
+paragraph = Paragraph(text="We build up a grid plot manually. Try changing the mode of the plots yourself.")
+
+select = Select(title="Sizing mode", value="fixed", options=list(SizingMode), width=300)
+select.js_link('value', p1, 'sizing_mode')
+select.js_link('value', p2, 'sizing_mode')
+select.js_link('value', p3, 'sizing_mode')
+select.js_link('value', p4, 'sizing_mode')
 
 grid = GridBox(children=[(p1, 0, 1), (p2, 1, 0), (p3, 1, 1), (p4, 1, 2)])
-layout = column([paragraph, grid])
+layout = column([paragraph, select, grid])
 
 show(layout)


Test patch:
diff --git a/tests/baselines/examples/howto/layouts/manual_grid b/tests/baselines/examples/howto/layouts/manual_grid
--- a/tests/baselines/examples/howto/layouts/manual_grid
+++ b/tests/baselines/examples/howto/layouts/manual_grid
@@ -1,6 +1,7 @@
-Column bbox=[0, 0, 800, 429]
-  Paragraph bbox=[5, 5, 386, 19]
-  GridBox bbox=[0, 29, 800, 400]
+Column bbox=[0, 0, 800, 489]
+  Paragraph bbox=[5, 5, 455, 19]
+  Select bbox=[5, 34, 300, 50]
+  GridBox bbox=[0, 89, 800, 400]
     Plot bbox=[200, 0, 300, 100]
       LinearAxis bbox=[31, 76, 264, 24]
       LinearAxis bbox=[0, 29, 31, 47]