-*-outline-*-

Gnumeric Spread Sheet task list

* Workbook
   
   Have a new "manager" file that will take over the details of open
   workbooks and active servers, instead of the current approach we
   use to have this management in the workbook.c file

   The bold and italic buttons need to be updated after a load to
   reflect the cell with the cursor.

* Component

   Make sheet_selection_changed_hook execute a list of hooks 
   Remove the hard-coded workbook hooks from the sheet.
   Initialize the hooks on the workbook_new routine.

   The model is somewhat broken.  sheet_new creates a sheet_view by
   default. 

   I think we need something like: workbook_new and workbook_view_new
   to split this sort of thing.

* Cell editing

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

   * Colouring a parsed formula for editing.

   * The mouse can select a range as the current argument while editing a
     formula without changing to a different cell.

* Expressions

    * Rework the handling of input ranges for functions/operators that take
      scalars.  To either take implicit intersection of calling cell and range
      or to create array result and apply function/operator to each input
      individually.  

* Implement Even More Functions

    * AREAS, INDEX, MATCH, GETPIVOTDATA, GROWTH, LOGEST, and PERCENTILE
    * Finish LINEST and TREND
    * AMORDEGRC, AMORLINC, COUPDAYBS, COUPDAYS, COUPDAYSNC, COUPNCD,
      COUPNUM, COUPPCD, CUMIPMT, CUMPRINC, IRR, MDURATION, MIRR,
      ODDFPRICE, ODDFYIELD, ODDLPRICE, ODDLYIELD, PRICE, VDB, XIRR,
      YIELD, YIELDDISC, and YIELDMAT.

* Fix the Following Functions

    * DAVERAGE, DGET, PERCENTRANK, and VLOOKUP

* Printing
  * Save print information in workbook
  * Load print information from workbook
  * Preview
  * Print setup: 
    * Options buttons
    * Improve layout 
    * Provide GUI for margin editing.
    * 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
  * Add color printing support.

* Font dialog

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

* Cell dimension computation is broken on font change for multi-lines.

* 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.

* Sheet

** 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 drawing

   We should compute the style for non-existing cells and draw these. 
   This has been partially implemented, run with gnumeric_debugging > 0
   
   Code is in gnumeric/src/item-grid.c.  But it is not working
   properly with selection.

** 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. 

   Instead this should be done with split-pane support in tandem with
   disabling the standard caption rendering. This would give a far more
   flexible approach : Michael.

** 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". 

** Queueing redraws as we are doing it now is broken.

   Currently I queue the entire changed region for redraw, I should
   only queue the difference and possibly the borders (after a cell 
   border has changed).

   This causes the slowdown when selecting large sheets.

* Auditing
   Write the sheet auditing code.

* Searching

   Searching text on the spreadsheet.

* EDITION

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

   Object properties.

** Cut, Copy, Paste

    - References to cut cells (even references within the cells
      need to be relocated to point to the paste location.

** Paste special 

  needs some little changes:
  - When formulas are pasted with an operation,
    the new ExprTree should be created with the operation.

** Style

  Borders:

  - Color/patterns differentiate pattern foreground & background
  - Remember when a color is selected as a contrast to the another.
  - pattern selector needs tooltips, button like appearance, and
    white backgrounds for the patterns.

  Protection:
    Bloqued/Hidden

** Keyboard shortcuts
    * When pasting a cut expression the references should be treated as
      absolute.

* 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)

  Add "hints" to the file save routine based on the registered
  formats.

* Display Engine

* Unicode support throughout

* Workbooks:

** Notebook:

   Clicking on it chooses it
   Double clicking changes the name
   Right clicking gets:
     insert

 - Decrease flicker when paging between sheets.

* Sheets

When adding a sheet or renaming a sheet, should we reparse everything?

* Clipboard

Perhaps make a global clipboard and remove all the hacks in the
current clipboard code to find the clipboard.

* Sheet Objects

Rewrite the entire support for sheet objects.  I do not like the code
at *all*.

* Styles

Rewrite all cell style support, for memory efficiency and speed.
Rewrite background pixmap handling to take 2 colours: FG & BG.

* Office compatibility

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

* Internals

  * Kill cell_set_font in its current way, the font used to encode
    type, size, boldness and italicness.  This is not the case
    anymore.  We should kill this and only use
    cell_set_font_from_style.

  * Exceptions.

    Currently some code is refusing to make changes when an array
    operation is acted on.  This code is inside the core, and a CORBA
    client might find this problem without being able to do anything
    about it, nor knowing about the error condition.

  * Improved style architecture

    Possibly needed for better Excel export

  * Hack R[-1]C[3] style references into the parser.

  * Hack Array support into the parser.

Selection
 - Move selection code into a new file
 - Handle multiple overlapping selections without double counting.
