1. 11 Aug, 1998 1 commit
  2. 10 Aug, 1998 1 commit
  3. 08 Aug, 1998 2 commits
    • Arturo Espinosa's avatar
      It autocalcs! · d2c3b2ba
      Arturo Espinosa authored
      
      
      It autocalcs!
      
      My technique is incredibly cool!  The engine should support
      most excel features for recursive computations (we just need
      the dialog boxes now).
      
      It still has a wierdo crash from a mismatched string ref/unref
      but that is going to be trivial to fix.
      
      Next step:  Functions in Perl.
      d2c3b2ba
    • Arturo Espinosa's avatar
      Today it probably does not compile, but I have to leave now. · 6b09bc61
      Arturo Espinosa authored
      
      
      Today it probably does not compile, but I have to leave now.
      
      This is basically the framework for getting computations working.
      
      My current approach is to register areas of interest for a cell.
      This is not perfect, but good enough:
      
      	The idea is to walk the expression tree and look for
      	cell references (cell references or ranges) and register
      	those areas of "interest" for a cell.
      
      	When a new text is entered into a cell, the "regions" of
      	interest list is checked and if a match is found, then
      	the cells on that region of interest are queued for
      	recomputation.
      
      Of course, I do not know yet how to handle the recursive references.
      
      One option is to keep a counter (that starts at zero) during
      recomputation, ie something like:
      
      eval_cell (Cell *cell)
      {
      	cell->use_count++;
      	if (cell->use_count > threshold)
      		return "Cycle too depth";
      	...
      	on value lookup:
      		eval_cell (cell);
      	...
      	cell->use_count--;
      }
      6b09bc61
  4. 07 Aug, 1998 1 commit
    • Arturo Espinosa's avatar
      Lots of work as usual :-) · c875c8db
      Arturo Espinosa authored
      
      
      Lots of work as usual :-)
      
      Cell lookup is still broken.
      More functions!  COUNT, AVERAGE, AND, OR.
      
      Changed the function framework: it is now easier to write
      functions that take multiple arguments.
      
      Added some documentation on writing functions.
      
      Miguel.
      c875c8db
  5. 06 Aug, 1998 1 commit
    • Arturo Espinosa's avatar
      Lots of things today: · b261e986
      Arturo Espinosa authored
      
      
      Lots of things today:
      
      - New functions implemented:
      	SELECTION(),  SUM(),  IF()
      
      - Autocompute of an expression that applies to the selection.
      
      - Added comparission to the expression grammar.
      
      - Added array values.
      
      Bug fixes as usual and lots other thingies I forget.
      
      Miguel
      b261e986
  6. 04 Aug, 1998 1 commit
  7. 30 Jul, 1998 1 commit
    • 0's avatar
      Free the record that tracks the allocation records. (alloc_clean): Handle · 69def31c
      0 authored
      1998-07-30    <miguel@nuclecu.unam.mx>
      
      	* src/parser.y (alloc_clean): Free the record that tracks the
      	allocation records.
      	(alloc_clean): Handle Strings.
      	(alloc_list_free): New function: cleans up the allocation list.
      
      	* src/gnumeric-sheet.c (gnumeric_sheet_load_cell_val): Fix to use
      	the new Strings.
      
      	* src/cell.h: Use the new Strings instead of the Symbols.  That
      	was just a stupid idea.
      
      	* src/str.c (string_ref): New file:  Implements string sharing.
      
      	* src/symbol.c (symbol_install): Use our copy of the allocated key
      	when installing the symbol.
      
      1998-07-29    <miguel@nuclecu.unam.mx>
      
      	* src/symbol.c (symbol_unref_ptr): New function that does symbol
      	unreferencing and if the reference count reaches zero, it also
      	sets the value pointed to NULL.
      
      	* src/sheet.c (cell_set_text): Release evaluation tree after
      	entering new contents in a cell.
      
      	* src/sheet.h (Cell): We now keep all of the character information
      	as refcounted Symbols.
      
      	* src/expr.c (eval_node_release): Renamed and made static.  New
      	allocation strategy: EvalTree's top node are now refcounted to
      	simplify cell duplication.
      	(eval_expr): Now it takes column and row arguments for evaluating
      	the expression in that context.
      	(expr_parse_string): Same.
      
      	* src/parser.y: Renamed EvalNode to EvalTree.
      	(return_cellref): CellRefs now contain offsets relative to the
      	current column/row if the references are not absolute.
      
      	* src/gnumeric-sheet.c (gnumeric_sheet_make_cell_visible): Use new
      	helper routines for doing the scrolling.  Scroll vertically.
      	(gnumeric_sheet_set_top_row, gnumeric_sheet_set_top_col): New
      	routines for keeping the contents of the canvas and the bars in
      	sync.
      	(gnumeric_sheet_new): Take the ItemBars for the columns and rows
      	as a parameter now.
      
      	* src/sheet.c (sheet_select_all): New routine: select the complete spreadsheet.
      
      	* src/item-bar.c (item_bar_class_init): Signal now takes an extra
      	argument which indicates the beginning of a column selection.
      
      	* src/sheet.c (sheet_selection_col_extend_to,
      	sheet_selection_row_extend_to): New methods for implementing the
      	extending column and row selection.
      	(sheet_row_selection_changed, sheet_col_selection_changed): Now
      	they use the new parameter to start the selection.
      69def31c
  8. 28 Jul, 1998 1 commit
  9. 27 Jul, 1998 1 commit
    • Miguel de Icaza's avatar
      Rename currentWorkbook to current_workbook, so that it follows the style · 474c8eaa
      Miguel de Icaza authored
      
      1998-07-27  Miguel de Icaza  <miguel@nuclecu.unam.mx>
      
      	* src/main.c (main): Rename currentWorkbook to current_workbook,
      	so that it follows the style of the rest of my code ;-)
      
      	* src/item-cursor.c (item_cursor_init): Add a timeout handler for
      	drawing the anted animation.
      	(item_cursor_set_bounds): Setup the Canvas Item bounding box when
      	the bounds of the cursor change.
      
      	* src/gnumeric-sheet.c (start_cell_selection): Create the
      	selection cursor at the same position the regular cursor is.
      
      	(gnumeric_sheet_init): Share colors between items and the canvas.
      474c8eaa
  10. 26 Jul, 1998 1 commit
  11. 25 Jul, 1998 1 commit
    • Arturo Espinosa's avatar
      Weee! Regular strings are now treated as values (so they can be used in · a30e70c3
      Arturo Espinosa authored
      
      
      Weee!  Regular strings are now treated as values (so they
      can be used in cell expressions).  This means you can actually
      start typing expressions and they will actually make sense
      (note that no recalc is yet supported).
      
      The code to do interactive selections is there, but for some
      reason the cursor is not paying much attention to me.
      
      This feature lets you select a cell for an expression if you
      type in a formula in the spreadsheet (just type '=' and use
      the arrow keys to see my buggy code).
      a30e70c3
  12. 24 Jul, 1998 1 commit
  13. 22 Jul, 1998 1 commit
    • Miguel de Icaza's avatar
      Numbers are parsed correctly. Bits of Oleo number parsing plugged in. · ef28d5f2
      Miguel de Icaza authored
      1998-07-21  Miguel de Icaza  <miguel@nuclecu.unam.mx>
      
      	* src/parser.y (yylex): Numbers are parsed correctly.  Bits of
      	Oleo number parsing plugged in.
      
      	* src/util.c, src/util.h: New files with assorted number utilities.
      
      	* src/numbers.h: New file: takes care of using gmp or regular
      	double/int.
      
      	* src/expr.c (eval_release_node): Implement.
      	(eval_release_value): New function.
      
      	* src/sheet.c (sheet_col_selection_changed,
      	sheet_row_selection_changed): Implement.
      	(sheet_selection_clear, sheet_selection_clear_only): Splitted
      	functionality into two routines.
      	(sheet_selection_clear_only): Remove any marks from the bars.
      	(sheet_row_set_selection, sheet_col_set_selection): Implement.
      
      	* src/item-bar.c (is_pointer_on_division): Return the column
      	changed.
      
      	* src/item-grid.c (item_grid_draw_cell): Fix the computation for
      	right indentation.
      ef28d5f2
  14. 21 Jul, 1998 1 commit
    • Arturo Espinosa's avatar
      Weee! I realized that columns were not rows and rows were not columns. · c81d44ec
      Arturo Espinosa authored
      
      
      Weee!  I realized that columns were not rows and rows were not
      columns.  Cell storage manager works now.
      
      Now I also keep a hash table with the cell contents just for the
      lookup portion of the code.
      
      Also the code for displaying various alignements is there give
      or take a couple of off-by-ones clipping rectangles (the code
      right now has hardcoded styles so different columns have different
      alignment styles, just in case someone tested this).
      
      Miguel.
      c81d44ec
  15. 20 Jul, 1998 1 commit
  16. 18 Jul, 1998 1 commit
  17. 17 Jul, 1998 1 commit
  18. 16 Jul, 1998 1 commit
    • Arturo Espinosa's avatar
      Today: 1. First pass at selections (multiple selections are allowed). 2. · 9b935b6c
      Arturo Espinosa authored
      
      
      Today:
      	1. First pass at selections (multiple selections are allowed).
      	2. Cursor selection works.  Do not try to drag outside the
      	   window though, there is a little bug to be fixed and it will
      	   keep a pointer grab.
      	3. Started to add destructors all over the place, better to
      	   keep an eye on those memory leaks since the beginning.
      
      Miguel.
      9b935b6c
  19. 14 Jul, 1998 1 commit
  20. 11 Jul, 1998 1 commit
    • Arturo Espinosa's avatar
      Lots of stuff. · 02fbd7f8
      Arturo Espinosa authored
      
      
      Lots of stuff.
      
      Mouse resizing columns and rows is fully working.  Other random
      internal goodies, the engine is nicer, the code is nicer, the stuff is
      starting to make sense, etc.
      
      It is nice to `see' what it does right now.
      
      Miguel.
      02fbd7f8
  21. 09 Jul, 1998 2 commits
    • Miguel de Icaza's avatar
      Dropped the ColInfo and RowInfo structures, they are now unified into a · 491136d7
      Miguel de Icaza authored
      1998-07-09  Miguel de Icaza  <miguel@nuclecu.unam.mx>
      
      	* src/*: Dropped the ColInfo and RowInfo structures, they are now
      	unified into a single ColRowInfo structure, they were really the
      	same thing.  Thanks to Federico for the suggestion.
      491136d7
    • Arturo Espinosa's avatar
      Total excitement! (take two, as the previous ChangeLog message was · 2d356b1d
      Arturo Espinosa authored
      
      
      Total excitement! (take two, as the previous ChangeLog message was
      discarded because someone commited before me).
      
      Cool stuff today: we got the columns and rows displayed, with nice
      cursor change working; New canvas paint item strategy works very
      nicely (much better than the previous stuff); got a region-cursor
      working with various of selection modes (still have to figure out how
      to draw selected stuff though); basic cursor movement works for now;
      sample demo of the toy is included.
      
      Miguel.
      2d356b1d
  22. 08 Jul, 1998 1 commit
    • Arturo Espinosa's avatar
      Ok, the fact that life sucks manifests itself in various ways. · da196d41
      Arturo Espinosa authored
      
      
      Ok, the fact that life sucks manifests itself in various ways.
      
      First of all GDK_INVERT and GDK_XOR gc functions do not do
      what you want them to do, but what they are supposed to do, so
      my cursor instead of being a nice black and firm box, is just
      a pinkie thingie on my Indy.
      
      Second, I got all of the grid draw logic wrong.  That is not
      the way Excel does it, so tomorrow, I rewrite it.
      
      Miguel.
      da196d41
  23. 07 Jul, 1998 1 commit
  24. 06 Jul, 1998 1 commit
  25. 02 Jul, 1998 2 commits