From b84fc632aa797d670d2b1c458af14b8ed61c7615 Mon Sep 17 00:00:00 2001 From: Ivan Usov <ivan.usov@psi.ch> Date: Tue, 5 Oct 2021 14:49:07 +0200 Subject: [PATCH] Restrict DataTable column editing Setting editor to CellEditor makes the column read-only for user even if "editable=True" for the entire DataTable --- pyzebra/app/panel_ccl_integrate.py | 9 +++++---- pyzebra/app/panel_hdf_param_study.py | 15 +++++++++++---- pyzebra/app/panel_param_study.py | 9 +++++---- 3 files changed, 21 insertions(+), 12 deletions(-) diff --git a/pyzebra/app/panel_ccl_integrate.py b/pyzebra/app/panel_ccl_integrate.py index a722ef3..5b406f8 100644 --- a/pyzebra/app/panel_ccl_integrate.py +++ b/pyzebra/app/panel_ccl_integrate.py @@ -10,6 +10,7 @@ from bokeh.layouts import column, row from bokeh.models import ( BasicTicker, Button, + CellEditor, CheckboxEditor, CheckboxGroup, ColumnDataSource, @@ -326,9 +327,9 @@ def create(): scan_table = DataTable( source=scan_table_source, columns=[ - TableColumn(field="scan", title="Scan", width=50), - TableColumn(field="hkl", title="hkl", width=100), - TableColumn(field="fit", title="Fit", width=50), + TableColumn(field="scan", title="Scan", editor=CellEditor(), width=50), + TableColumn(field="hkl", title="hkl", editor=CellEditor(), width=100), + TableColumn(field="fit", title="Fit", editor=CellEditor(), width=50), TableColumn(field="export", title="Export", editor=CheckboxEditor(), width=50), ], width=310, # +60 because of the index column @@ -464,7 +465,7 @@ def create(): fitparams_table = DataTable( source=fitparams_table_source, columns=[ - TableColumn(field="param", title="Parameter"), + TableColumn(field="param", title="Parameter", editor=CellEditor()), TableColumn(field="value", title="Value", editor=NumberEditor()), TableColumn(field="vary", title="Vary", editor=CheckboxEditor()), TableColumn(field="min", title="Min", editor=NumberEditor()), diff --git a/pyzebra/app/panel_hdf_param_study.py b/pyzebra/app/panel_hdf_param_study.py index a371624..652e9ea 100644 --- a/pyzebra/app/panel_hdf_param_study.py +++ b/pyzebra/app/panel_hdf_param_study.py @@ -10,6 +10,7 @@ from bokeh.models import ( BasicTicker, BoxZoomTool, Button, + CellEditor, CheckboxGroup, ColumnDataSource, DataRange1d, @@ -210,7 +211,7 @@ def create(): scan_table = DataTable( source=scan_table_source, columns=[ - TableColumn(field="file", title="file", width=150), + TableColumn(field="file", title="file", editor=CellEditor(), width=150), TableColumn( field="param", title="param", @@ -218,9 +219,15 @@ def create(): editor=NumberEditor(), width=50, ), - TableColumn(field="frame", title="Frame", formatter=num_formatter, width=70), - TableColumn(field="x_pos", title="X", formatter=num_formatter, width=70), - TableColumn(field="y_pos", title="Y", formatter=num_formatter, width=70), + TableColumn( + field="frame", title="Frame", formatter=num_formatter, editor=CellEditor(), 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 height=420, diff --git a/pyzebra/app/panel_param_study.py b/pyzebra/app/panel_param_study.py index 466acff..6943264 100644 --- a/pyzebra/app/panel_param_study.py +++ b/pyzebra/app/panel_param_study.py @@ -11,6 +11,7 @@ from bokeh.layouts import column, row from bokeh.models import ( BasicTicker, Button, + CellEditor, CheckboxEditor, CheckboxGroup, ColumnDataSource, @@ -494,10 +495,10 @@ def create(): scan_table = DataTable( source=scan_table_source, columns=[ - TableColumn(field="file", title="file", width=150), - TableColumn(field="scan", title="scan", width=50), + TableColumn(field="file", title="file", editor=CellEditor(), width=150), + TableColumn(field="scan", title="scan", editor=CellEditor(), 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), ], width=410, # +60 because of the index column @@ -624,7 +625,7 @@ def create(): fitparams_table = DataTable( source=fitparams_table_source, columns=[ - TableColumn(field="param", title="Parameter"), + TableColumn(field="param", title="Parameter", editor=CellEditor()), TableColumn(field="value", title="Value", editor=NumberEditor()), TableColumn(field="vary", title="Vary", editor=CheckboxEditor()), TableColumn(field="min", title="Min", editor=NumberEditor()), -- GitLab