-*-outline-*-

Gnumeric Spread Sheet task list

* Component
   Remove the hard-coded workbook hooks from the sheet.
   Initialize the hooks on the workbook_new routine.

* Cell editing
   * Support for entering multi-line cells, and <Alt-Enter> adding an
     embedded newline.

   * Colouring a parsed formula for editing.

   * C-Insert: Copy, S-Insert: Paste, S-Delete: cut; test.

* Implement Even More Functions

    * AREAS and GETPIVOTDATA
    * AMORDEGRC, AMORLINC, COUPDAYSNC, COUPPCD, CUMIPMT, CUMPRINC, MDURATION,
      ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD, PRICE, VDB, YIELD,
      YIELDDISC, and YIELDMAT.

* Fix or finish the implementation of the Following Functions
    * CELL, COUPDAYBS, COUPDAYS, and DURATION

* Data Analysis Tools
    * Finish `Anova: Two-Factor With Replication' and `Histogram' tools
    * Implement `Patterned distribution' for `Random Number Generation'
    * Implement new tools:
      - `Exponential Smoothing'
      - `Fourier Analysis' (the dialog is implemented)
    * Finish the documentation

* Printing
  * Preview
    * Stroke support for zoom etc.
  * Print setup: 
    * Options buttons
    * Improve layout 
    * Provide preview of the headers/footers
    * Make sure scaling works.
  * Add the missing options to the Print Dialog
  * Display printing status (pages to go).
  * Add column/row title printing
  * patterns.

* Font dialog
  * Get the list of *valid* fonts from GnomePrint
  * Filter font list by font encoding.
  * Create a simplistic dialog (to map to font-bold yes/no).

* when cuting & pasting a cell that is inside a range on another cell grow
  the range of the formula if the cell is pasted in a place where it grows
  it boundaries.

* Number formatting
   The formatting code should take the current GtkFont for the cell
   being formatted as well as the width allowed and take this into
   account to render the number as well as possible given the space so
   that for small regions, numbers in scientific notation are displayed.

   - '*' does not work

    FIXME : The formating is incomplete.
	  - It does not support seconds fractions.
	  - It incorrectly accepts mmm:ss as some sort of minute spec.
	  - Add/remove decimal buttons on the toolbar are screwed for
	    items with different formats for negatives.
	  - There is too much replicated code for generating formats
	    and recognizing them in the format dialog.

    TODO :
	  - Too much parsing is taking place when formating.  We should
	    have set all that up beforehand when the format was parsed.
	    A methodology similar to that used by the regexp compiler should
	    be used.

* Sheet
   Should be possible to bind a name by typing the name on the
   region box and applying it to the selection
   
** Column sizes
   Columns should have an "auto-grow-up-to-this-point" feature.  Beyond that
   size, it would truncate as it does now.

** Cell data entry:
   double click on cell allows editing as in main editing box.

   double click on the magic little copy box fills the current
   column to the depth of the column to the left ??

** Cell comments
   Cell comments should be wrapped - at least so that they do not run
   off the screen.
   
** Headers for Columns and Rows
   The captions should be customizable, ie instead of "A1", it should
   be possible to display "Sales".  We can use this with Michael's
   name support. 

** Captions (ItemBar)
   It should be possible to set the dimensions of the cols, rows to
   contain information as "min_points", "max_points".  

   Interesting side effect: min_points == max_points means "fixed". 

* Auditing
   Write the sheet auditing code.

* Searching
   Searching text on the spreadsheet.

* EDITING

** Object Clipboard
   If sheet->mode is OBJECT_SELECTED cut/copy/paste should operate on
   the object.

   Object properties.

** Style
  Protection:
    Bloqued/Hidden

* File Load/Save
  - Support for popular formats.  
    I have the specs for the XS3 format.  SC should be
    trivial to support as well (from the guile sources)
  - star office, kspread ?
  - Add "hints" to the file save routine based on the registered
    formats.
  - Supply default extension to use with a write operation
  - Improve error handling and display in file_read routines.
  - Add ability to send warnings, and progress while loading.
  - Improve handling of unknown fonts and functions when importing.

* Display Engine
  - drawing double line borders is broken
  - merged cells.
  - Continue cleaning cursor code.
  - Merged Cell support required intervention for cursors
    and supporting vertical continuations.

* Unicode support throughout

* Workbooks:
  - Consider addition of a cursor warping operation to jump between
    open workbooks.

** Notebook:
  - Copy sheet dialog.
  - Decrease flicker when paging between sheets.
  - Enable capability to select multiple sheets.

* Sheet Objects
  - Load / save, print of all objects + Bonobo objects.

* Office compatibility
  - Write an XML plugin to output 'Publish as Web' style XML for
    Office 2000 and 'explorer' compatibility.

* Parser
  - fully support R[-1]C[3] type references
  - Improve error reporting.

* Internals
   When filling large regions (ie, select, enter data, control-enter),
   we are taking ages.  In those cases, we could probably:
      1. Start using speciallized allocators for Cell, ExprTree, Value
      2. Do async rendering of cells. eg when they are being displayed or during an idle handler.

* Calculation
  - Rework 'Name' dependencies so we can re-express names.
  - Dependancies for - CELL, INDIRECT functions.
		     - Sheet objects
  - Implicit iteration.  For an array expression that returns scalar results
    which takes a range as a scalar argument, apply the expression to each element
    of the input range.
  - Rethink 'generation' mechanism.  It currently forces all cells to
    be recalculated when the value of any of them change.
    ie
	a1 : sum (b2:c3)
	changing b2 bumps the generation of the workbook.
	All 4 cells b2,b3,c2,c3 get recalculated even though
	only b2 needed it.

	Functions taking ranges as arguments are forced to do their own
	recalc checking for elements of the range.  They cheat and use
	the generation to test for recalc.  This is wrong!  It should be sufficent
	to only manually recalc a cell that has its recalc flag set.  However,
	in order to support that we need mark all cells that directly or indirectly
	depend on a cell as requiring recalc when a cell changes.

* Make checks for inserting rows/cols more intelligent in the face of multiple
  selections.  Currently it just checks the first selected range for
  infiniteness we need to check all selected ranges.

* Excel Import
  * Localise sheet/workbook Name import,
  * Import names even if they arn't referenced.

* Excel Export
  * Detect large style ranges and correctly set the default row/col/sheet styles.

* Html export
  * Export style information for blank cells.

* Graph component

* Graph Druid

* Gnumeric-side graph support
