Restrict DataTable column editing

Setting editor to CellEditor makes the column read-only for user even
if "editable=True" for the entire DataTable
This commit is contained in:
usov_i 2021-10-05 14:49:07 +02:00
parent 3acd57adb9
commit b84fc632aa
3 changed files with 21 additions and 12 deletions

View File

@ -10,6 +10,7 @@ from bokeh.layouts import column, row
from bokeh.models import ( from bokeh.models import (
BasicTicker, BasicTicker,
Button, Button,
CellEditor,
CheckboxEditor, CheckboxEditor,
CheckboxGroup, CheckboxGroup,
ColumnDataSource, ColumnDataSource,
@ -326,9 +327,9 @@ def create():
scan_table = DataTable( scan_table = DataTable(
source=scan_table_source, source=scan_table_source,
columns=[ columns=[
TableColumn(field="scan", title="Scan", width=50), TableColumn(field="scan", title="Scan", editor=CellEditor(), width=50),
TableColumn(field="hkl", title="hkl", width=100), TableColumn(field="hkl", title="hkl", editor=CellEditor(), width=100),
TableColumn(field="fit", title="Fit", width=50), TableColumn(field="fit", title="Fit", editor=CellEditor(), width=50),
TableColumn(field="export", title="Export", editor=CheckboxEditor(), width=50), TableColumn(field="export", title="Export", editor=CheckboxEditor(), width=50),
], ],
width=310, # +60 because of the index column width=310, # +60 because of the index column
@ -464,7 +465,7 @@ def create():
fitparams_table = DataTable( fitparams_table = DataTable(
source=fitparams_table_source, source=fitparams_table_source,
columns=[ columns=[
TableColumn(field="param", title="Parameter"), TableColumn(field="param", title="Parameter", editor=CellEditor()),
TableColumn(field="value", title="Value", editor=NumberEditor()), TableColumn(field="value", title="Value", editor=NumberEditor()),
TableColumn(field="vary", title="Vary", editor=CheckboxEditor()), TableColumn(field="vary", title="Vary", editor=CheckboxEditor()),
TableColumn(field="min", title="Min", editor=NumberEditor()), TableColumn(field="min", title="Min", editor=NumberEditor()),

View File

@ -10,6 +10,7 @@ from bokeh.models import (
BasicTicker, BasicTicker,
BoxZoomTool, BoxZoomTool,
Button, Button,
CellEditor,
CheckboxGroup, CheckboxGroup,
ColumnDataSource, ColumnDataSource,
DataRange1d, DataRange1d,
@ -210,7 +211,7 @@ def create():
scan_table = DataTable( scan_table = DataTable(
source=scan_table_source, source=scan_table_source,
columns=[ columns=[
TableColumn(field="file", title="file", width=150), TableColumn(field="file", title="file", editor=CellEditor(), width=150),
TableColumn( TableColumn(
field="param", field="param",
title="param", title="param",
@ -218,9 +219,15 @@ def create():
editor=NumberEditor(), editor=NumberEditor(),
width=50, width=50,
), ),
TableColumn(field="frame", title="Frame", formatter=num_formatter, width=70), TableColumn(
TableColumn(field="x_pos", title="X", formatter=num_formatter, width=70), field="frame", title="Frame", formatter=num_formatter, editor=CellEditor(), width=70
TableColumn(field="y_pos", title="Y", formatter=num_formatter, width=70), ),
TableColumn(
field="x_pos", title="X", formatter=num_formatter, editor=CellEditor(), width=70
),
TableColumn(
field="y_pos", title="Y", formatter=num_formatter, editor=CellEditor(), width=70
),
], ],
width=470, # +60 because of the index column width=470, # +60 because of the index column
height=420, height=420,

View File

@ -11,6 +11,7 @@ from bokeh.layouts import column, row
from bokeh.models import ( from bokeh.models import (
BasicTicker, BasicTicker,
Button, Button,
CellEditor,
CheckboxEditor, CheckboxEditor,
CheckboxGroup, CheckboxGroup,
ColumnDataSource, ColumnDataSource,
@ -494,10 +495,10 @@ def create():
scan_table = DataTable( scan_table = DataTable(
source=scan_table_source, source=scan_table_source,
columns=[ columns=[
TableColumn(field="file", title="file", width=150), TableColumn(field="file", title="file", editor=CellEditor(), width=150),
TableColumn(field="scan", title="scan", width=50), TableColumn(field="scan", title="scan", editor=CellEditor(), width=50),
TableColumn(field="param", title="param", editor=NumberEditor(), width=50), TableColumn(field="param", title="param", editor=NumberEditor(), width=50),
TableColumn(field="fit", title="Fit", width=50), TableColumn(field="fit", title="Fit", editor=CellEditor(), width=50),
TableColumn(field="export", title="Export", editor=CheckboxEditor(), width=50), TableColumn(field="export", title="Export", editor=CheckboxEditor(), width=50),
], ],
width=410, # +60 because of the index column width=410, # +60 because of the index column
@ -624,7 +625,7 @@ def create():
fitparams_table = DataTable( fitparams_table = DataTable(
source=fitparams_table_source, source=fitparams_table_source,
columns=[ columns=[
TableColumn(field="param", title="Parameter"), TableColumn(field="param", title="Parameter", editor=CellEditor()),
TableColumn(field="value", title="Value", editor=NumberEditor()), TableColumn(field="value", title="Value", editor=NumberEditor()),
TableColumn(field="vary", title="Vary", editor=CheckboxEditor()), TableColumn(field="vary", title="Vary", editor=CheckboxEditor()),
TableColumn(field="min", title="Min", editor=NumberEditor()), TableColumn(field="min", title="Min", editor=NumberEditor()),