Spreadsheet::Perl
=================

insert_rows_columns works only in the same spreadsheet
	this can be fixed though, Recalc and use dependents to modify
	inter spreadsheet formulas

deletion of cell should update the dependent list

insert_rows_columns check formulas to see if they are inlclusive in the
	insertion range. should they check for intersection as Delete_column does?

subs checking if a cell or range is contained or intersect with another range MUST first Canonize the range so named ranges work too

Named cells in insertion/deletion

dependents are stored by name not by reference, thus do not work, yet, with
insert and delete

tests for col/row insertion

if a cell contains a formula calculation error (#ERROR, #REF, ..) 
	should Sum ingnore it or return an error (better is a value telling
	where the error is comming from

should arithmetic formulas consider undefed cells like cells containing 0?

test function are_spreadsheet_values_equal

cache the result of list context CanonizeAddress to speed up things

code is not documented making the API difficult to grasp and use

find a way to move the examples to tests

function to show cell dependencies
	in a tree mode with formulas, based on get dependencies. also show the cell
	names if any

verification at load time of the formulas could be optional

factorize formula code in STORE/FETCH, is it needed in STORE?

default file format should be perl, writable too (dump streamer?)

function definitions should be object specific, OK as class specific but a choice should exist

debugging mode to show where the functions are called

#!Use new ASCIITAble.

-a column/row stores default value for unset cells ? Use Fetch callback
-spreadsheet (0,0) stores default value for unset cells ? Use Fetch callback

What do we call before we clear the spreadsheet? rows or columns?

DBI interface

R1C1 reference in formulas => $ss{"+1,-3"}

Insertion of rows and columns (=> inter spreadsheet formulas !!)
Sorting (=> formulas !!)
	option to invalidate all formulas containing a ref to the deleted row ...

Generate graphs, pies, ..

Composite initialisation type? Composite(PerlFormula(), 7, Format(), ....) ;
Clear(FORMULA, VALUE, FORMAT, ALL) ;

perl debugger support/triggers

#Common format
	#register non spreadsheet formulas => builtin functions serialisation
	
	#update serialization
	#update deserialisation
	
	#update documentation
	#have a formula and a perl_formula field
	
#write should serialize using multilines if formulas are so written.
#!!!!! accept x\s+,\s+y as address

#-----

#Fix the name export problem

#Symbolic formulas => translator? or simpy refuse it
#Symbolic addressing? partly done through perl.

#function to list the available spreadsheet functions and where they are comming from ?
#keep the list of added functions
#AddFunction can take a text rep for the function
#Read/Write

#Fetch and store sub should have symbolic names that can be used when debugging
#DEBUG::INLINE_INFORMATION

#$ss->Formula( F1, F2, ...) ;
#$ss->{DEBUG}{FETCH} = sub. See {DEBUG}{FETCH_TRIGGER}

#dump to screen in cell form
#handle page width
#redraw the row header if multi page

#dump to html table
#Autofill example
#RE-think AUTOCALC!
#one naming function for range and cell (recursive within call)
#DefineSpreadsheetFunction, remove object function
#No cache at spreadsheet level
#Ref RefNoCache
#run the formulas in script namespace ? => No
range limit ('B*'), what are the semantics of '*'?

#Find
[addresses] = Find(regexes and/or subs, range[s]),
@adresses = map{$_->[0] ;}
		grep{test($_->[1])}
			map{[$_, $ss->Get($_)]} $ss->GetAddressList(@ranges) ;
			
@values = grep{test($_) ;} map{$ss->Get($_)} $ss->GetAddressList(@ranges) ;

#Replace
scalar = FindAndReplace(sub, ranges)

Perl debugger support: breakpoint ...

#Change DATA to CELLS

#$ss{A9.USER_DATA} ;

#Store callback

#$ss->{DEBUG}{FETCH_CELL}{A1}++ /= sub ; # display message when 'A1' is fetched

#!AddFormat should be deep => user can get the format and modify it

#Let range share validators
#Range fillers

#a range is a spreadsheet (?) => fetching a range returns a list with alll the values

#inter spreadsheet references ? Spreadsheets have names: 'main:A3:B7'
	#$ss->AddSpreadsheet('name', reference_to_object) ;
	#$ss->SetName, $ss->GetName
	#sorting of cell names
	
#inter spreadsheets dependencies ??
#inter spreadsheets cycles ?? 

#Relative references : A1 and Absolute references : $A$1 in formulas
#	=> absolute is '[A][1]'

#F:OffsetFormula, GetAddressOffset  (x,y)
#F:Copy, Copy(address/range) / Paste => easily done through hash slices

modules: DBI URL-GET statistique ....
modules: printing html-generation ImportExcel ...
modules: autofill wizards ...

#Fetchers => sub
#Input validator => Add by name (lock is one)

#Spreadsheet::Perl::Arithmetic::Sum ...
#Spreadsheet::Perl::Arithmetic::Sum should take a list of ranges

#row 0 is the header row

#formulas are pure perl
#formula defintions

#function definitions

#constructor arguments

#setting through a data struct
#dump

#each cell is a hash internaly

#named cell and range

#locking per cell

#format

#AUTOCALC

#no cycles are allowed (we can use the new cyclic module)
#compute cells when needed only
#dependencies changes mark the cell as needing update

#sorting of cell names

#F:GetCellList
#F:GetLastIndexes




