Here's the cell 'locked' patch, take 2. This is for 1.1.x only and has
some fixes/improvements/clean-up suggested by Jody. File-by-file summary
below, for the changelog, although most of this is the same as before.
* plugins/excel/ms-excel-write.c (build_xf_data): change a comment to
indicate that we do, now, implement locked cells.
* src/gnumeric-canvas.c (gnm_canvas_key_mode_sheet): don't put us in
edit mode if wbcg_edit_start indicates the cell is locked.
* src/workbook-control-gui.c (cb_autosum, cb_autofunction): handle
case where wbcg_edit_start returns FALSE indicating that cell is
locked.
* src/wookbook-control-gui.c (delete_sheet_if_possible, wbcg_validation_msg):
Cleaned up some gtk_dialog_run's while I was at it. Changed to
gnumeric_dialog_run, which sets the transient property and closes the
dialog when everything's done. It's not really related to locked
cells, sorry.
* src/workbook-control-gui.c (wbcg_locked_msg, workbook_control_gui_ctor_class):
* src/workbook-control-priv.h:
* src/workbook-control.c (wb_control_locked_msg):
* src/workbook-control.h:
virtual method to put up error dialog when we attempt to edit a locked
cell. Based on wb_control_validation_msg.
* src/workbook-edit.c (wbcg_edit_start): this function now returns a
boolean which indicates whether the 'edit_start' attempt succeeded.
Check cell properties to return FALSE if the cell is locked.
* src/workbook-edit.h (wbcg_edit_start): modify the prototype as per above.
* src/workbook-view.c (wb_view_set_attribute, workbook_view_init):
Remove ARG_VIEW_* enumeration, which isn't used after Gnome2 port.
Add WorkbookView::protected attribute, and initialize it to FALSE.
The update to wb_view_set_attribute is enough to get xml_sax import
working properly (yay, modular code!).
* src/workbook-view.h: add 'protected' field to WorkbookView struct.
This is TRUE iff the workbook is locked.
* src/xml-io.c (xml_write_wbv_attributes):
Write the new 'protected' workbook view attribute.
Two lines are enough to get read/write from xml_io working.
Score one for xml_sax: zero should have been sufficient.
* src/dialogs/cell-format.glade: The 'worksheet protected' checkbox
shouldn't be greyed-out anymore.
* src/dialogs/dialog-cell-format.c (cb_protection_sheet_protected_toggle,
fmt_dialog_init_protection_page, cb_fmt_dialog_dialog_buttons):
connect up the 'worksheet protected' button in the
Format->Cells->Protection dialog. Update worksheet object when
toggled and mark that the dialog's changed.
* src/dialogs/dialog-workbook-attr.c src/dialogs/workbook-attr.glade:
Add Format->Worksheet->Protection dialog.
Enjoy!
--scott
immediate Bush COBRA JANE domestic disruption supercomputer early warning
Nader RUCKUS Soviet nuclear D5 SLBM Moscow assassination EZLN Boston
( http://lesser-magoo.lcs.mit.edu/~cananian )
Attachment:
patch-HEAD-cvs.locked2
Description: Implementation of locked cells for 1.1.x. No grey-out.