To report Gnumeric bugs, please visit bugzilla.gnome.org.

This file is used as a scratch pad by developers.  It is a list of known
issues that need to be addressed.  Divided into, things that will prevent
release, and longer term bugs.

Release Critical
----------------

* When we release 1.1.18, we should ask people to nominate certain foreign
  encodings as major.

* New libgsf -- we leak .5MB or so per save.

Pending Patches
---------------

    - ?? more work on D&D based sheet reorg ?

    http://bugzilla.gnome.org/show_bug.cgi?id=84062
    - XIM menu

1.2 Targets
-----------

- validate expression names to ensure that they are not simple values (eg TRUE)

0) Misc minor UI tweaks
    0.1)  Missing toolbar borders for colour and stack combos	(DONE)
    0.2)  Make the 'apply' behavior of the color combo optional
          so that we can do just selection.
    0.3)  Add keynav for color combo
    0.4)  center color combo swatches in the buttons
    0.5)  alpha channel support for colour combos
    0.6)  Add mnemonic_activate for colour combos		(DONE)
    0.7)  Add mnemonic_activate for ExprEntry			(DONE)
    0.8)  Queue update for changed/deleted in ExprEntry ?
    0.9)  menu mnemonics for Edit -> Fill -> merge & series	(DONE)
    0.10) Fix warning on destruction of torn off combo		(DONE)
    0.11) Use 'Chart' in the ui to be compatible
    0.12) giving focus to an expr entry with a single rangeref
    	  in another sheet should make that range visible.

1) graphs							{Jody}
    1.1) Split plot xml file engine, type, and family plugins	(DONE)
    1.2) Use the registered engines to create plots		(DONE)
    1.3) xml -> GValue parsing for type args
	1.3.1) borrow code from libglade			(DONE)
	1.3.2) remove GdkColor from boxed type support
	1.3.3) add GOColor support
	1.3.4) Consider font specification
	1.3.5) Possibly move to libgsf
    1.4) Decide on model vs view structure			(DONE)
    1.5) Pie Plot
	1.5.1) Make the segments curve				(DONE)
	1.5.2) extracted segments
	1.5.3) Rings
	1.5.4) Radial plots
    1.6) 1st pass at Graph Guru					(DONE)
	1.6.1) update when someone else changes the model	(DONE)
	1.6.2) remove prop pages for deleted items		(DONE)
	1.6.3) Keep state::chart,plot safe for typeselector	(DONE)
	       in case they get deleted
    1.7) data allocator in gnumeric				(DONE)
    1.8) XLS import
	1.8.1) check overlap percentage for bars		(DONE)
	1.8.2) Add gog_object_set_position
	1.8.3) Handle 'use_one_style' for pies
	1.8.4) override auto series indexing for xls
	1.8.5) styles
	1.8.6) Avoid leaking GODatas when faced with an unknown
	       plot type.
    1.9) data sources
	1.9.1) vector and scalar data sources from gnumeric	(DONE)
	1.9.2) static vector and scalar data sources for utils
	1.9.3) an index source
	1.9.4) Add min/max elements to vector			(DONE)
    1.10) Bar/Col Plot						(DONE)
	1.10.1) merge bar/col stack type bools into 1 enum	(DONE)
	1.10.2) normal						(DONE)
	1.10.3) stacked						(DONE)
	1.10.4) percentage					(DONE)
	1.10.5) Skip over bars/cols when too narrow
	1.10.6) Work around bleed through with overlap 100	(DONE)
	1.10.7) Check for short vectors				(DONE)
    1.11) Rethink GraphItem lifecyle to simplify removal	(DONE)
    1.12) Extend GogObjectRole to include more handlers		(DONE)
    1.13) Decide on recalc strategy				(DONE)
	1.13.1) Getting data from sheet -> graphs		(DONE)
	1.13.2) linking unlinking				(DONE)
    1.14) axis management
    1.15) per series plot type specific data			(DONE)
    1.16) libart based render akin to guppicanvas.		(DONE)
	1.16.1) Solid background fills				(DONE)
->	    1.16.1.1) Use ArtRender interface
	1.16.2) Gradient fills (basic)				(DONE)
	    1.16.2.1) use bbox.x2-bbox.x1 + 1 for size		(DONE)
	1.16.3) Image fills
	1.16.4) path						(DONE)
->	    1.16.4.1) Use ArtRender interface
	1.16.5) text
	1.16.6) markers
    1.17) Connect the user_config handler for SheetObjectGraph	(DONE)
          to test the guru on existing graphs
    1.18) Extend sheet object anchor assignment to call object	(DONE)
          specfic handlers so that we can set the logical size
	  of the graph.
    1.19) Precedence
	1.19.1) Sort GogObject::children 			(DONE)
	1.19.2) Keep corresponding views in sync		(DONE)
	1.19.3) Have guru maintain order for add/remove		(DONE)
	1.19.4) api for changing order
	1.19.5) Extend Guru to support changing precedence
    1.20) GogStyle Editor page
	1.20.1) fill type
	    1.20.1.1) none					(DONE)
	    1.20.1.2) solid					(DONE)
	    1.20.1.3) basic gradients				(DONE)
	    1.20.1.4) advanced gradients 		{Jean Befort}
	    1.20.1.5) pixmaps fills			{Jean Befort}
	    1.20.1.6) patterns
	1.20.2) outline style
    1.21) themes
	1.21.1) Actually use the themes to initialize styles	(DONE)
	1.21.2) load from xml
	1.21.3) selector for graphs
	1.21.4) How to change a graph's theme
    1.22) Legend
	1.22.1) Set up cardinality framework.			(DONE)
	1.22.2) smarter layout
    1.23) simple chart layout
	1.23.1) In ChartView::size_allocate use the positions	(DONE)
	1.23.2) For compass placement use the alignment flags	(DONE)
	1.23.3) support NW, NE, SW, SE				(DONE)
	1.23.4) Add some notion of padding
    1.24) Sizing units
	1.24.1) Have the legend use pts to size swatches	(DONE)
	1.24.2) Test renderers mapping between pts & pixels	(DONE)

    Pinch Guppi's property bag code for GogObject ?

    - theme
    - series style
    - attributes for
	: type			: GObject::parms
	: instance		: GObject::parms with a flag
	: data point		:
    Wishlist
	drag destination for background images in style editor

2) stf								{Andreas}
    2.1) UTF-8 cleanliness					(DONE)
    2.2) User specifiable character encoding                    (DONE)
    2.3) Replace UI for format selection
    2.4) Provide an optional mechanism for specifying the
	 target location useful for text to columns, and
	 import into sheet
    2.5) A help button
    2.6) Make it possible to ignore column on import, thus
	 making it possible to import (parts of) files with
	 more than 256 columns.  (Think of this as a special
	 "format".)
    2.7) Create interface for line terminator selection
    2.8) Make listed separators locale dependent
    2.9) User specifiable locale encoding			(DONE)
    2.10) Fix stf bugs
    2.11) Improve initial file preview                          (DONE)
    2.12) Hook up workbook-control-gui.c:cb_data_import_text
	Data -> External -> Import _Text File...
    2.13) Separate guessing of csv/fixed from importer.
    2.14) Implement format guessing.
    2.15) Put big "best guess" button on from page.

3) hlinks
    3.1) Finish the edit dialog to load and store results 	(DONE)
    3.2) Figure out import semantics of the other 2 XL types
    3.3) email support ? via system 'evoltion mailto:....'

5) zip based format
    5.1) move existing code into plugin (easy)
    5.2) work on sax-ish exporter				(DONE)
    5.3) convert xml-sax to use gsf sax helper			(DONE)
    5.4) Namespace support for xml import			(DONE)
    5.5) writeup and discuss proposals for container
    5.6) writeup and discuss proposals for content

6) XL
    6.1) biff7 externsheet records in charts			(DONE)
    6.2) 97 export						(DONE)
    6.3) Check xl import of unicode names			(DONE)
    6.4) Fix export of unicode for 95 & 97			(DONE)
    6.5) Intersection, union and set export
    6.6) name export
	6.6.1) Excel 97						(DONE)
	6.6.2) Excel 95						(DONE)
	6.6.3) Excel crashes on our xl95 export of names test
    6.7) non-ole import (Nick Lamb is working on this)		(DONE)
    6.8) Validation export					(DONE)
	6.8.1) Clip ranges that are outside the sheet area	(DONE)
    6.9) autofilter export					(DONE)
	6.9.1) Add name						(DONE)
	6.9.2) autofilterinfo count				(DONE)
	6.9.3) field info in AUTOFILTER records			(DONE)
	6.9.4) combos						(DONE)
	    6.9.4.1) XL95					(DONE)
	    6.9.4.2) Escher					(DONE)
    6.10) hlink export

14) Polish up Open and Save
    14.1) merge open and import dialogs				(DONE)
    14.2) Notice mismatch between suffix and saver		(DONE)
    14.3) sort the file types by precedence and recently used
    14.4) do we want to persist recently used ?

19) Session management
    http://bugzilla.gnome.org/show_bug.cgi?id=69799
20) Change =IF back to a nodes function to handle the majority case
21) AutoFilter
    21.1)  clip size for long lists				(DONE)
    21.2)  fix mouse events for scrolled combos			(DONE)
    21.3)  race condition on start				(DONE)
    21.4)  top 10 dialog					(DONE)
    21.5)  top 10 item filters					(DONE)
    21.6)  top 10 percentage filters				(DONE)
    21.7)  blank filters					(DONE)
    21.8)  visual cue that row in part of a filter		(DONE)
    21.9)  visual cue that a field is active			(DONE)
    21.10) select the current condition in the combos		(DONE)
    21.11) expression filters					(DONE)
    21.12) expression dialog					(DONE)
    21.13) Handle range changes (cut-n-paste or ins/del col/row)(DONE)
    21.14) Handle the relationship between groups and filters	(DONE)
    21.15) xml import/export					(DONE)
    21.16) Fix cursor redraw after filter			(DONE)
    21.17) Link filters to Show All menu			(DONE)
    21.18) Have the show all action clear filter conditions	(DONE)
    21.19) Change value entries in expr dialog into combos
    21.20) editable enters for expr dialog value entries
    21.21) 2nd value in expr dialog only if 1st is active
    21.22) drag scroll for value combos
    21.23) undo/redo for creation
    21.24) undo/redo for condition set change
    21.25) Undo redo support for ins/del col/row with filters
    21.26) guess initial region if its a singleton
    21.27) combo contains start to end of continuous region
           not just the end of the selected region
    21.28) filter changes should dirty things

22) Add dirty flags to workbook too, adding a sheet should
    make workbook dirty not the new sheet.

23) gconf.
    23.1) Check for errors					(DONE)
    23.2) double check that we update on remote changes

24) Plugins
    24.1) enhance gobject service to do delayed load		(DONE)
    24.2) pluginize paste types
    24.3) plugin manager needs dependency tracking.  (Deactivate all
          python plugins before the python loader, for example.)

25) Audit all fixed-length buffers.  Most non-time-critical can be replaced
    by proper usage of g_strdup_printf.
    25.1)  src/*.[ch]                                           (DONE 20030110 MW)
    25.2)  plugins/applix                                       (DONE 20030409 MW)
    25.3)  plugins/corba                                        (DONE 20030408 MW)
    25.4)  plugins/derivatives                                  (DONE 20030408 MW)
    25.5)  plugins/dif                                          (DONE 20030408 MW)
    25.6)  plugins/excel
    25.7)  plugins/fn-*                                         (DONE 20030110 MW)
    25.8)  plugins/gb                                           (DONE 20030110 MW)
    25.9)  plugins/gda                                          (DONE 20030110 MW)
    25.10) plugins/gnome-glossary                               (DONE 20030408 MW)
    25.11) plugins/gnumeric_1_0         ---NOT BUILT---
    25.12) plugins/guile                                        (DONE 20030110 MW)
    25.13) plugins/html                                         (DONE 20030110 MW)
    25.14) plugins/lotus-123                                    (DONE 20030110 MW)
    25.15) plugins/mps                ---PROBABLY SAFE---
    25.16) plugins/numtheory                                    (DONE 20030110 MW)
    25.17) plugins/oleo                                         (DONE 20030408 MW)
    25.18) plugins/openoffice                                   (DONE 20030408 MW)
    25.19) plugins/perl                                         (DONE 20030110 MW)
    25.20) plugins/plan-perfect                                 (DONE 20030408 MW)
    25.21) plugins/psiconv              ---NOT SAFE---
    25.22) plugins/py-func                                      (DONE 20030408 MW)
    25.23) plugins/python-loader                                (DONE 20030408 MW)
    25.24) plugins/qpro                                         (DONE 20030110 MW)
    25.25) plugins/sample_datasource                            (DONE 20030110 MW)
    25.26) plugins/sc                                           (DONE 20030409 MW)
    25.27) plugins/sylk                                         (DONE 20030110 MW)
    25.28) plugins/uihello                                      (DONE 20030408 MW)
    25.29) plugins/xbase                                        (DONE 20030408 MW)
    25.30) plugins/xml_sax                                      (DONE 20030408 MW)

26) Format characterization
    26.1) Add characterization (units) to StyleFormat

27) audit all of the export plugins to handle utf8

Functions
    ODDFPRICE	(test fails)
    ODDFYEILD	(unimplementeD)
    YIELDDISC	(test fails by alot)
    Convert the code from sc to use our more accurate date routines
    WORKDAY	Add holiday support
    YEARFRAC	Implement

Possibly Post 1.2 Targets
-------------------------
- insert cut
- pivot tables
- validation from list (generalize filter combos)
- clipboard handlers in plugins
- input message				(Stored)
- load/save of external references
- all the merged cell singleton bugs

Probably Post 1.2 Targets
-------------------------
- eggmenu (would be nice to slide in to support merging from non-bonobo build)
- finish corba plugin
- conditional formats : could be done if someone wanted to work on the dialog
- scripting
- undo/redo transaction file
- drawing rotated borders

Excel i/o
    - 'Forms' import.

Misc stuff that should be fixed
-------------------------------

- Plugin breakage:
    - "De-activate all" should take the dependency tree into account and
      handle the python loader last.

    - When loading a function that already has a definition (such as a stub),
      we're in trouble: (a) we just overwrite the old definition in the symbol
      table, (b) both old and new owner want to remove the symbol on exit.

      We should somehow steal the old definition (and complain unless the old
      was a stub) without changing the GnmFunc address.  On exit we should
      explicitly check that it is ours to remove.


- Missing undo/redo for
    - Freeze panes (tricky this is a view attribute)
    - Duplicate sheet.
    - Remove sheet. This raises some serious design issues.
    - Goal seek.
    - Tabulate.
    - Sheet object configuration changes.
    - Sheet object creation
    - Workbook attr changes
    - Fill->series
    - Data->Text to columns

- drag based col/row resize should support negative sizes to correspond to
  hiding.

- We need to somehow add --export-dynamic to the gnumeric link line, or else
  plugins won't load on Solaris/gcc.  (This might just be my bastard libtool.)

- Remove duplication of code between analysis-tools.c and collect.c

- Make deletion work for multiple ranges.

- The autocalc label should use a more readable format and should not get
  clipped.

- Names
    : references in names do not get changed with cut/paste or ins/del row/col.
      How to handle relative references in names ?? here.
    : Dialog
	* We should start with the expr entry set to either the current cell,
	  or by selecting the first named expression in scope that contains the
	  current cell.
    : Check scoping changes.
    : Is there such a thing as an array formula in a name ?
    : Handle pasting an expression with an un-qualified sheet local name into
      another sheet

- hidden rows/cols
    : Make unhide smarter to find hidden regions on either side of selected ranges.

- clean up the range_list codes to differentiate a list of ranges from a list
  of cellranges.

- In selected regions the borders of cells that
  have their background color set are drawn incorrectly.
  An off-by-one pixel problem. For details see :
  http://bugzilla.gnome.org/show_bug.cgi?id=52240

- The max row/col canvas scroll size is still hard coded.

- Formats
    : Why does the number matching bother comparing against formats that are
      covered by 'General' ?
    : format.c: we should resolve all the separators at gnumeric_setlocale time,
      not every time we need them.
    : When applying a currency symbol we need to store the NON-localized id.
    : hour month and year format strings need to be internationalized.
	eg tt:ss instead of hh:ss for other locales.
    : formats with AM/PM need to be internationalized.
    : we should parse fractions
    : We do not format fractional seconds correctly.
    : Parsing should handle embedded strings
    : It incorrectly accepts mmm:ss as some sort of minute spec.

- let's add simple commands like inc/dec font size and things like that.

- Support parsing and displaying locale specific function names.

- Auto resize needs to handle empty cells.

- auto-fill does not resize row/col

- Styles
    : improve uniform_get to handle full sheet more quickly.
    : Borders
	* use new border code for cell format dialog (possibly preview-grid)

- SheetObjects
    : SheetView specific objects
    : Add acetate_create virtual to handle shaped objects.
    : Other anchor types for sheet objects
    : Add keyboard controls for the control points
    : Add object control for resize to disable invalid sizes.
    : Add 'is_printable' flag and import
    : Add 'move_with_cells' flag					(DONE)
    : Add ability to fix aspect ratio of drag resize
    : Honour rubber_band_directly during resize too
    : research the other xl object flags.
    : remove update_view_bounds and have the model emit a bound_changed signal
    : double click to bring up prefs dialog
    : selecting object with other objects on top of it should hide them while
      editing

Dialogs
-------
- Formula Guru
    : Fix keyboard interface

Function Breakage
-----------------
- Function range_min_k uses an O(n*log n) algorithm.  It should use O(n)
  algorithm, see Knuth.

Printing
--------
- cell text wraps differently when printing than displaying due to scaling
  differences in font size.  do we want to eliminate this ?

Plugins
-------
- i18n support for third-party plugins.
- Add extra info (authors, etc.) to XML file.
- Beautify ErrorInfo dialog (it's ugly).
- Mark plugin as "broken" if deactivation failed.
- mps
    : has some fixed-length arrays that can be overrun.
    : creates formulae by making strings and then parsing them.
      (Wasteful and won't work in non-C locales.)

--------------------------------------------------------------------------------
Finished

4) finish support for h/v only splits				(DONE)
7) Expr Parser                                                  (DONE)
    7.1) Move the host of flags into an GnmExprConventions      (DONE)
    7.2) Use conventions obj to generate strings		(DONE)
8) Reinstate auto-format					(DONE)
    8.1) Move type information to function flags.		(DONE)
    8.2) Change commands to infer types.			(DONE)
9) Manual recalc						(DONE)
    9.1) finish calculation ui in workbook attr dialog		(DONE)
10) fix highlighting of completion code				(DONE)
11) Use the default gtk font rather than our own		(DONE)
12) audit all of the import plugins to do UTF-8 conversions     (DONE)
    12.1)  excel						(DONE)
    12.2)  applix						(DONE)
    12.3)  lotus						(DONE)
    12.4)  quattro pro                                          (DONE)
    12.5)  plan perfect						(DONE)
    12.6)  html							(DONE)
    12.7)  opencalc						(DONE)
    12.8)  oleo                                                 (DONE)
    12.9)  sc                                                   (DONE)
    12.10) sylk                                                 (DONE)
    12.11) dif                                                  (DONE)
    12.12) psion                                                (DONE)
13) export plugins use gsf					(DONE)
15) Decide whether to turn on the poor man's UTF-8 regexps.     (DONE)
16) Outline mode						(DONE)
    16.1) optionally put markers above/left			(DONE)
    16.2) smarter handling for groups at the edge of selection	(DONE)
    16.3) implement 'clicked' for numbers callbacks		(DONE)
17) 3D reference fixes on sheet deletion			(DONE)
18) 'discard' for invalid expressions enters text as string	(DONE)
23) Bonobo component						(DONE)
    23.1) Install it in libexec					(DONE)
    23.2) Investigate warnings 					(DONE)
