1998-10-28 Miguel de Icaza * src/parser.y (dump_tree): Updated to use the new symbol table. 1998-10-27 Miguel de Icaza * src/parser.c (dump_tree): Use extra argument. * src/expr.c (function_call_with_values): Use the extra argument to symbol_lookup * src/func.c (constants_init): Use the extra argument to symbol_install. * src/main.c (main): Invoke global_symbol_init. * src/symbol.h: Symbol routines now take an extra argument; the symboltable they work on. Now the code can have multiple symbol tables (this is required for the cell range name bindings in a per-sheet fashion. 1998-10-25 Miguel de Icaza * src/sheet.c (sheet_set_zoom_factor): Zoom factor should be applied to to the default styles. 1998-10-27 Daniel Veillard * src/xml-io.c: adapted code to the new XML tree format, however to compile you need to update your libxml from the CVS tree too. Not a definite solution I'm thinking about a more general API for XML tree values encoding/decoding. I modified the endoding format but backward compatibility should be maintained. 1998-10-23 Federico Mena Quintero * src/workbook.c: Made the menus consistent with the (unwritten!) UI Guidelines document. 1998-10-18 Tom Dyas * src/clipboard.c: Update to new GTK selection API. 1998-10-14 Miguel de Icaza * src/fn-string.c (gnumeric_right): New file. Implements left/right string functions. 1998-10-13 Miguel de Icaza * src/item-grid.h: Add some missing variables. 1998-10-13 Jakub Jelinek * src/item-grid.c (item_grid_stop_sliding, item_grid_sliding_callback, item_grid_start_sliding): New functions. (item_grid_event): If x or y is out of canvas bounds, do sliding for both cell and formula selection. For button release from formula selection, make cell being edited visible afterwards. (item_grid_button_1): If not extending selection with shift, make cursor cell visible. * src/gnumeric-sheet.c (move_cursor, gnumeric_sheet_key_mode_sheet): Make cursor cell visible. * src/sheet.c (sheet_select_all): Make home visible. (sheet_make_cell_visible): New function. (sheet_cursor_move, sheet_cursor_set): Don't make cursor visible, caller has to do it himself if desired. * src/sheet.h (sheet_make_cell_visible): New prototype. * src/workbook.c (workbook_parse_and_jump): Make cursor cell visible. 1998-10-13 Miguel de Icaza * src/utils.c (col_name): It is amazing the number of times I duplicated this code. I wonder if I took prozac by accident. This should fix the bug reported by Morten Welinder 1998-10-12 Miguel de Icaza * src/sheet-view.c (vertical_scroll_event, horizontal_scroll_event): Set the top column/row from the adjustment as well. * src/gnumeric-sheet.c (gnumeric_sheet_set_top_col, gnumeric_sheet_set_top_row): Export these functions to improve the scrolling behaviour. 1998-10-12 Miguel de Icaza * src/utils.c (cellref_name): Fixed another of column name decoding. I wonder when I will learn. 1998-10-07 Jakub Jelinek * src/sheet.c (sheet_cursor_set): Add base_col and base_row arguments. Move cursor to that location, so that it really reflects base of the selection. * src/sheet.h (sheet_cursor_set): Ditto. * src/clipboard.c (x_selection_received): Callers changed. * src/gnumeric-sheet.c (gnumeric_sheet_set_selection): Ditto. (move_cursor): Ditto. * src/item-cursor.c (item_cursor_autofill_event): Ditto. (item_cursor_init): Fix a typo. 1998-10-08 Miguel de Icaza * src/sheet-object.c (create_object): Rectangles have the same problems Ovals do in terms of Canvas cordinate constraints. (sheet_view_object_realize): same. 1998-10-07 Miguel de Icaza * src/sheet-view.c (sheet_view_col_selection_changed): Make sure the column is allocated (so that the column size change picks up the column during the iteration). (sheet_view_row_selection_changed): Same * src/style.c (font_init): New routine: loads a couple of default fonts to be used in Gnumeric. * src/item-bar.c (bar_draw_cell): Make the SELECTION cells display with a bold font. (item_bar_realize, item_bar_unrealize): reference and unreference the gnumeric_default_bold_font. 1998-10-07 Jakub Jelinek * src/item-grid.c (item_grid_button_1): Handle shift+click on cells (removes last selection and selects from last base to current mouse location). (item_grid_event): Don't lock up if mouse is moved during selection behind left or top margin of sheet canvas (later on we should move the current view). * src/cell.c (cell_formula_changed): Cast void * to something reasonable. * src/item-bar.c (draw_bar_cell): Switch from 2 state bars to 3 state: whole column/row is selected in one of the current selections, some cells are selected in one of the selections or nothing is selected. Get rid of ci->selected, compute it from the selections. (item_bar_draw): Ditto. * src/cell.h (selected): Ditto. * src/sheet.c (sheet_init_default_styles, sheet_init_dummy_stuff): Ditto. (sheet_selection_row_extend_to, sheet_selection_col_extend_to): Remove. (sheet_all_is_selected): True if any of the selections covers whole sheet. (sheet_col_selection_type, sheet_row_selection_type): New functions. (sheet_selection_set): New function. * src/sheet-view.c (sheet_view_row_set_selection, sheet_view_col_set_selection): Remove. (sheet_view_col_selection_changed, sheet_view_row_selection_changed): Handle shift+click and ctrl+click on whole columns/bars as well. (sheet_view_col_size_changed, sheet_view_row_size_changed): Use sheet_*_selection_type instead of ci->selected. * src/item-bar.h (ItemBarSelectionType): Enum for the new 3 state column/row titles. (ItemBarClass): selection_changed takes modifier mask as argument. * src/sheet-view.h (sheet_view_*_set_selection): Remove prototypes. * src/sheet.h (sheet_selection_*_extend_to): Ditto. (sheet_selection_set, sheet_*_selection_type): New prototypes. 1998-10-06 Miguel de Icaza * src/cell.c (cell_modified): Cells from the clipboard do not have a Sheet parameter attached. * src/sheet.c (sheet_cell_add): Check the computed style: if the computed style includes a format, then turn on the cell flag for format is set to avoid the auto guess of cell content. (sheet_style_compute): Now can return the flags of the style that were not part of the default style. * src/file.c (dialog_query_load_file, workbook_save_as): Put the window close to the mouse. * src/workbook.c (sheet_check_dirty, workbook_close): Do not cancel without warning the user if the workbook has changed. (workbook_new, workbook_can_close, workbook_window_destroy, quit_cmd, close_cmd): Reorganized the code to suit the new code to prevent inadvertent quits. 1998-10-06 Adrian Likins * doc/images/*.gif: gifs for documenting the button bar * doc/editing.sgml, files.sgml, formulas.sgml, gnumeric.sgml, number-format.sgml, worksheet.sgml: doc updates, some prelim info on file loading/saving 1998-10-05 Miguel de Icaza * src/cell.c (cell_modified): New function, used to tag a modified cell in a sheet. * src/fn-math.c (gnumeric_average): Display error on division by zero. Make the code not depend on the types returned by gnumeric_sum and gnumeric_count. (callback_function_sum): Keep sum as integers as long as possible instead of using floating point all the time. 1998-10-03 Miguel de Icaza * src/fn-math.c (callback_function_sum): Do not try to be smart about string content. Let the smartiness to other layers. (gnumeric_average): Handle division by zero on average routine. * src/number-match.c (create_option_list): Small bug fix: First translate, then move the pointer ahead. * src/cell.c (str_trim_spaces): Trim space routine was removing everything after the first space instead of removing only the trailing space. (cell_draw): Free the original string, not the modified copy. * src/sheet.c (sheet_set_text): Test if the format has been manually set by the user before trying to do format matching. * src/cell.h: New flag: CELL_FORMAT_SET, used if the user has manually specified a format. FIXME: This information should be saved and loaded. * src/cell.c (cell_set_format): Set the CELL_FORMAT_SET flag 1998-10-03 Nuno Ferreira * src/workbook.c: Added some more keys to navigate the menus. * gnumeric.desktop: Added Portuguese translations. * autogen.sh: Modified hack that patches libtool to work with srcdir != builddir 1998-10-02 Richard Hestilow * plugins/stat/stat.c: added new function NVARIANCE for division by N instead of N - 1, fixed div by 0 error if variance of a single value was taken, free'd up some mem leaks. (Thanks to Morten Welinder for noticing these) 1998-10-02 Richard Hestilow * Added new statistics plugin 1998-10-02 Jakub Jelinek * src/dialog-cell-format.c (apply_coloring_format): fix, fore_color was assigned twice, and back_color never. 1998-10-02 Miguel de Icaza * src/item-grid.h: ItemGridSelectionType: new enumeration type used for item_grid->selecting to avoid shutting down entirely the formula selection range on mouse release. >>>>>>> 1.164 1998-10-02 Vincent Renardias * Changed 'es@mx' into 'es_MX' for locale stuff in configure.in, po/*, doc/translating.sgml. 1998-10-01 Adrian Likins * src/*.sgml: guess what? doc updates.. mainly info on formatting cells. * src/images/number-format-*.jpg: more images 1998-10-01 Miguel de Icaza * src/item-grid.c (item_grid_event): Removed unused variables * src/gnumeric-sheet.c (gnumeric_sheet_start_cell_selection, gnumeric_sheet_selection_extend, gnumeric_sheet_selection_cursor_place): New routines for letting the user use the mouse to select a cell range. Invoked from item-grid.c * src/item-grid.c (item_grid_event): Clean and reorgranize the event handler, remove unused variables. * src/gnumeric-sheet.c (selection_expand_horizontal): -1 now means "shrink the selection", which means Left/Up keys shrink. Right/Down expand. (selection_expand_vertical): likewise. * src/format.c (format_number): Fixed memory leak: this is a pretty bad construction: g_string_append (s, alloc_string()). I just did not see it coming. Taking metal note of this. * src/number-match.c (format_create_regexp): Fixed memory leaks. The strings returned by create_option_list need to be released. * src/style.c (style_color_new): Important bug fix: The key I was passing was a GdkColor, but our hash table stored StyleColors inside. * src/format.c (append_year): Better fix, suggested by Morten Welinder 1998-09-30 Miguel de Icaza * src/clipboard.c (clipboard_export_cell_region): Correct fix to the paste problem: dont pass current_workbook, but rather the wb we get. * src/format.c (split_time): Compute the day of week. This was done before by localtime, but the new code was not doing it (thus, format "ddd" always reported "Sun"). * src/item-edit.c (item_edit_reconfigure): Call reconfigure in parent. * src/item-cursor.c (item_cursor_reconfigure): Call reconfigure in parent. * src/format.c (append_year): Year 2000 fix :-). * src/cell.c (cell_set_text_simple): Fix, use localeconv information to figure out if the text is a number or not. 1998-09-30 Havoc Pennington * src/dialog-cell-format.c (color_pick_change_notify): Change args to match new gnome-color-picker color_set args. 1998-09-39 Adrian Likins * doc/autofill.sgml, sell_refer.sgml, editing.sgml, gnumeric.sgml, number-format.sgml, worksheet.sgml: Minor updates, new info on formatting, spelling and formatting fixes. * doc/selection.sgml, selections.sgml: removed selection.sgml and added selections.sgml. * doc/images/worksheet-data-[1234].jpg, worksheet-running-calc-1.jpg, number-format-dialog-1.jpg: more pics to go along with the docs. 1998-09-30 Miguel de Icaza * src/workbook.c (quick_compute_routines): Made static * src/item-grid.c (item_grid_context_menus): Made static. 1998-09-29 Miguel de Icaza * src/cell.c (cell_draw_comment): New routine to paint a little red triangle if the cell hsa notes. * src/cell.c (cell_destroy): Destroy the comment. (str_trim_spaces): New routine. Trims the spaces on a string. (cell_draw): Trim the leading and trailing spaces on every string of a multi-line text. * src/color.c (color_init): Allocate a red for tagging the spreadhseet notes. * src/dialog-cell-format.c (format_list_fill): Apply the traslation when adding the format. * doc/tranlating.sgml: New document that describes how to internationalize and localize Gnumeric properly. * src/workbook.c (recalc_cmd): Provide a way to force a recomputation. (insert_current_time_cmd): New function. insert the current time. (insert_current_date_cmd): New function. insert the current date. (insert_at_cursor): New utility function. * src/gnumeric-sheet.c (gnumeric_sheet_key_mode_sheet): Handle control-home 1998-09-29 Raja R Harinath * src/parser.y (dump_tree): Update to change in `expr.h'. s/OP_/OPER_/g. 1998-09-29 Miguel de Icaza * src/xml-io.c: Changed the formatting of it to be like the rest of Gnumeric. * src/fn-math.c, src/fn-date.c: Simplify routines to use value_float and value_int. * src/expr.c (value_float, value_int): New utility functions to create values of type integer and float. * src/sheet.c (sheet_set_text): Use the matching engine on entered text * src/cell.c (cell_set_text_simple): New function. Does not queue cell computations nor queue any redraws (cell_content_changed): New function: Queues recomputations for cells that depend on the contents of the argument. (cell_set_format_simple): New routine, like cell_set_format but does not render the value nor queues a redraw. * src/xml-io.c: Use workbook_recalc_all instead of workbook_recalc * src/fn-math.c (gnumeric_log10, gnumeric_log, gnumeric_log2): Range check fix was wrong. The valid range does not include zero. Thanks to Morten Welinder for noticing this. (gnumeric_cosh): Call cosh, not cos. Reordered this file to have the help always before the function that defines it. (callback_function_or): Bug fix: any non-zero value is considered to be TRUE. (gnumeric_fact): Use exp (lgamma (n+1)) to compute large factorials (this only applies to factorials over 40). * src/about.c (dialog_about): Stop using gnome_dialog_set_modal. 1998-09-29 Miguel de Icaza * src/number-match.c (format_create_regexp): Small bug fix. I was making 'mm' be parsed as 'mmm'. Support 'mmmm'. * src/fn-date.c (gnumeric_now, gnumeric_date, gnumeric_today): Note that jannuary 1st is day 1, not day zero. * src/format.c (append_month): Fixed handling: tm_mon is zero based. (split_time): Fixed silly mistake I did last time I looked at this code * src/cell.c (cell_set_formula): Try to set the cell style if the style is General. * src/parser.y (return_symbol): Try to match the input with the format matching engine. * autogen.sh (PKG_NAME): Another hack to get rid of the annoying extracing symbols list, which, slows down my link time :-) 1998-09-28 Adrian Likins * doc/gnumeric.sgml, autofil.sgml, worksheet.sgml: More docs. * docs/images/worksheet*.jpg: jpg's for the new worksheet docs. 1998-09-28 Miguel de Icaza * src/number-match.c (compute_value): New file: Implements a smart way of parsing numbers: From all of the registered formats, it creates regexps for matching at the time the user inputs data. If that data matches any of the regexps, then the input is converted into a float, and a display format is assigned to it. * src/format.c (append_day, append_month): Skip the -now included- start at the begining for internationalization purposes. (split_time): Fixed the hour and second renddering. (format_number): Fix: hour_seen was not being set. * src/sheet-autofill.c (matches_list): Allow the lists to include an asterisk to be able to distinguish between abbreviations and full descriptions. * src/clipboard.c (x_selection_to_cell_region): New routine. Creates a CellRegion of type text based on the selection provided by X. (paste_cell_flags): New function, decoupled from do_clipboard_paste_cell_region. Handles new type in CellCopy. * src/sheet.c (sheet_selection_paste): Simplified as most of the work is now * src/clipboard.c (x_selection_received): Perform the paste operation, moved most of the logic from sheet.c. This does both internal paste and paste from the X selection (and everything works the way the user expects it to behave). 1998-09-27 Miguel de Icaza * src/cell.h: Cell Copys now can contain both Cells or plain text. * src/expr.c (function_call_with_values): Check the return value from symbol_lookup. 1998-09-27 Miguel de Icaza * plugins/python/python.c (marshal_func): Our scheduled indentation changes. * plugins/python/gnumeric_startup.py: Sample file that gets loaded when the Module is loaded. 1998-09-27 Raja R Harinath * configure.in (GNOME_COMPILE_WARNINGS): New check. (PYTHON_EXEC_PREFIX): Figure out `exec_prefix' where python was installed. (PYTHON_LIB_LOC): Use $PYTHON_EXEC_PREFIX instead of $PYTHON_PREFIX. * src/Makefile.am (CFLAGS): Comment out. (gnumeric_LDFLAGS): Pass `-export-dynamic', so that plugins can access symbols from the `gnumeric' binary. * plugins/sample/Makefile.am (CFLAGS): Comment out. * plugins/python/Makefile.am (CFLAGS): Comment out. (libpython_la_LDFLAGS): Move $(PYTHON_LIB_LOC) here. 1998-09-27 Adrian Likins * doc/{gnumeric, editing, formulas, autofill.sgml}: More approriate tags for the images and examples. Restructed to be a bit more logical. 1998-09-26 Adrian Likins * doc/*.jpg: * doc/images/*.jpg: moved images to an images subdir * doc/gnumeric.sgml, editing.sgml, autofill.sgml: cleaned up the markup some 1998-09-26 Miguel de Icaza * src/sheet-object.c (sheet_view_object_realize): Swap coordinates before passing to the canvas item. * plugins/python/python.c (init_plugin): Use the system installation directory to load the python scripts. * autogen.sh: Hack to make libtool add library dependcy information (it modifies the libtool file after it has been created). * src/workbook.c (workbook_set_filename): New routine to set the filename being edited of the workbook. * src/sheet-object.c (create_object): Swap arguments to the ellipse object to guarrantee we pass valid information. * src/render-ascii.c (cell_region_render_ascii): Ok, remove the leaks now. 1998-09-25 Adrian Likins * doc/cell_refer.sgml, doc/gnumeric.sgml, doc/editing.sgml: Change the structure of the outline of the docs to make a bit more sense. Added some more docs too. * doc/cell-*.jpg, doc/selection[8,9,10].jpg: more jpgs 1998-09-25 Miguel de Icaza * src/render-ascii.c (cell_region_render_ascii): new routine that renders a cell selection into a an ascii string. IT HAS PILES OF LEAKS. I have to go to the movies, will fix later tonight. * src/clipboard.c (x_clipboard_bind_workbook): New function used to connect the selection signals for a workbook. (x_selection_handler): New function: X selection handler. (clipboard_export_cell_region): New function: Export our clipboard to the X selection. (clipboard_copy_cell_range): call clipboard_export_cell_region * src/plugin-manager.c (plugin_manager_new), plugin.c: Add internationalization support. * src/sheet.c (sheet_selection_row_extend_to, sheet_selection_col_extend_to): New version that makes sure the column information has been allocated. * src/workbook.c (workbook_parse_and_jump): Maximum ranges were a little bit off. * src/parser.y (return_cellref): Fixed the same bug we had in parse_cell_name: The parsing of the column name to a column index was wrong here too. * src/sheet.c (sheet_row_info_set_height, sheet_col_info_set_width): New functions based on the older non-ColRowInfo versions. * src/sheet-view.c (sheet_view_row_size_changed, sheet_view_col_size_changed): Apply changes globaly if the whole sheet is selected. 1998-09-25 Adrian Likins * doc/dndselection.sgml, selection.sml: more docs, some on creating selections, and some on moving/copying cells * doc/dndselection-*.jpg, selection-*.jpg: jpegs to accompany the docs. 1998-09-24 Adrian Likins * doc/gnumeric.sgml, autofill.sgml: Some docs on the autofill stuff. * doc/autofill-[1..10].jpg: jpegs accompaning the autofill docs 1998-09-24 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_key_mode_sheet): Do not handle Control-a here. * src/workbook.c: Handle C-a with the GnomeApp accelerators Thu Sep 24 15:12:13 EDT 1998 Daniel Veillard * src/xml-io.c: moved to a per-XML file compression interface. 1998-09-24 Miguel de Icaza * src/item-cursor.c (item_cursor_draw): Make the anted selection one pixel wider. 1998-09-23 Miguel de Icaza * src/workbook.c (workbook_feedback_set): Add italic font setting support. * src/cell.c (cell_set_style): Render the value after copying a style. * src/clipboard.c (clipboard_paste_region): Add support for pasting the formats only. * src/xml-io.c: Destroy the extra style. * src/main.c (main): No need to init colors as they are auto-inited. * src/style.c (font_compute_hints): At font creation time store a couple of the font attributes for quick retrieval. * src/sheet-view.c (sheet_view_construct): Do not allow this button to have the focus either. * src/item-bar.c (item_bar_draw): If the whole sheet is selected, draw all of the columns in pressed presenstation * src/sheet.c (sheet_is_all_selected): Return wheter all the sheet is selected. * src/utils.c (cell_name): Fixed cell name computation. (parse_cell_name): Fixed parsing of the cell name. * src/item-grid.c (item_grid_event): More range checks. * src/item-bar.c (item_bar_event): range checks here too. * src/sheet-autofill.c (FillItem): Keep track of the originating cell so that we can copy the format. * src/cell.c (cell_set_style): New function. * src/sheet.c (sheet_selection_reset_only): Simple fix: For the row case, redraw the rows, not the columns. Cut/paste typo. * src/dialog-goto-cell.c (dialog_goto_cell): Do not complain if there was no target cell entered. * src/expr.c (eval_expr): Division of integers results in a float. * src/workbook.c: Added shortcuts to the File menu. * src/item-cursor.c (item_cursor_autofill_event): Do not allow under-the-base coordinates. * src/sheet-autofill.c: Its "january" not "jannuary". * src/cell.c (cell_set_text): Enhanced number detection. * src/item-cursor.c (item_cursor_drag_event): Handle sheet boundaries. * src/gnumeric-sheet.c (move_cursor_vertical, move_cursor_horizontal): Handle sheet boundaries. * src/item-grid.c (item_grid_event): Handle sheet boundaries. * src/item-bar.c (item_bar_draw): Handle sheet boundaries. * src/pixmaps/bold.xpm: Oops. Use the bold icon I created yesterday. 1998-09-23 Richard Hestilow * src/style.c: fixed hyphen vs hypen typo. Wed, 23 Sep 1998 12:52:20 +0200 Paolo Molaro * src/format.c: added #include * src/pixmaps: added bold.xpm: this is from gwp, maybe we need a better one:-) 1998-09-23 Miguel de Icaza * src/sheet-autofill.c (string_has_number): I got too agressive with the test so no Strings + Numbers were being autofilled. * src/workbook.c (workbook_setup_edit_area): Remove the CAN_FOCUS flags form the accept and cancel buttons. Bind the buttons. (buttons): Neither Zoom-in and Zoom-out can take the focus. (change_selection_font): New function to change the fonts of a cell range. * src/sheet.c (sheet_accept_pending_input): Renamed from sheet_accept_pending_output. * samples/: Added a new sample file: hypothetical-sales. * src/parser.y (yylex): Accept underscores in identifiers. * src/xml-io.c (readXmlCell): Set the content of the cell even if the file contains NULLS. * src/style.c (style_font_new): Better tolerance to missing fonts. * src/xml-io.c: Remove geometry setting: it has some bad side effects. * src/func.c (constants_init): Add a GNUMERIC_VERSION constant. Tue Sep 22 20:50:11 EDT 1998 Daniel Veillard * src/xml-io.c: set-up for compression of output. Should be tunable from the interface. 1998-09-22 Miguel de Icaza * src/xml-io.c (writeXmlStyle): Save colors. Save pattern. (readXmlStyle): return the value. Start with an empty style. Load font. (xmlGetColorValue): Use the style color allocation routines. (readXmlCell): Load style. Merge styles if an element is missing. Trim the cell tail content (spaces and newlines at the end). Changed the use of all hash tables to use strings instead of pointers. (readXmlObject); Call sheet_object_realize on the object loaded. * src/item-cursor.c (item_cursor_autofill_event): Commted out debugging code. * src/sheet-autofill.c (string_has_number): Bug fix: it was assuming every string had a number at the end. * src/workbook.c (workbook_new): Handle to destroy signal. Add Close option to file menu. * src/style.c, src/style.h (border_equal): Colors in the BorderStyler are now stored as StyleColors. * src/sheet.c (sheet_shift_col): Small buglette fixes: we need to advance our row walker here ;-) (sheet_shift_row): Same error was here. * src/format.c (format_value): Handle NaN/infinite numbers * src/gnumeric-sheet.c (gnumeric_sheet_key): Last fix was a little too good: Forward the keystroke events if the user is already editing a cell. * src/gnumeric-sheet.c (gnumeric_sheet_key): Do not process events that might be catched by the menubar. * src/about.c: Add about box. 1998-09-21 Miguel de Icaza * src/fn-math.c: Changed the way we tag the function definitions before its too late. * src/item-cursor.c (item_cursor_point): Made the thresholds for the cursor a little better. * src/dialog-cell-format.c: Small changes to the color configuration code. * src/expr.c (do_expr_decode_tree): When decoding a tree, include the argument separator. Also, loop properly trough the arguments being decoded. (function_call_with_values, function_def_call_with_values): New functions: these ones are for the plugins so that a plugin can invoke other functions in Gnumeric. * src/fn-date.c (gnumeric_now): The serial number returned by NOW() should be relative to 1900/1/1, not year zero. 1998-09-21 Adrian Likins *src/fn-math.c: firat stab at fleshing out the help blurbs here. 1998-09-20 Miguel de Icaza * src/expr.c (eval_expr): Fix the way we computed expressions. * src/eval.c (cell_eval): Maintain a CELL_ERROR flag to know if the value is NULL due to an error or to the cell not being evaluated. * src/expr.c (funcion_call_with_values): Add a routine to allow plugins to call other functions defined in Gnumeric. * src/style.c: Handle the pattern property of the styles. * src/style.h: Pattern style is now just a 4 bit quantity, instead of a RefCounted structure. * src/plugin.c: Include gnumeric-util.h 1998-09-19 Miguel de Icaza * src/item-cursor.c (item_cursor_do_drop): Use button-1 to select an option on the popup menu. * src/fn-date.c: New file, implements various date and time manipulation routines. * src/main.c: Accept --dump-func-defs flag to dump the help available for our built in functions. * src/symbol.c: Export the symbol hash table. * src/format.c (render_number): Use the locale provided rendering number. This will require translators to also translate correctly the default formats for their locale. * src/format.c (split_time): New code that works correctly in the range expected by Microsoft Excel [1900,1900+65535]. We of course work on a wider range than Excel can. We can work on pre-1900 dates and on 1900+2^31 dates, but it might make little sense. 1998-09-18 Miguel de Icaza * src/sheet-autofill.c (fill_item_new): Trivial bug fix (I was using a variable before testing if it wsa ok). 1998-09-18 Miguel de Icaza * src/item-cursor.c (item_cursor_autofill_event): Accept pending input when the user autofills. * README, Doc/Design: Updated * configure.in: autoconf tests for python. * src/sheet-autofill.c (sheet_autofill_dir): Only fill the region we were requested. 1998-09-17 Tom Dyas * plugins/sample/plugin-sample.c: Update to the new plugin API. * src/plugin.c (plugin_load,plugin_unload): Replaced g_print's with gnumeric_notice. Call new API function "can_unload" to see if a plugin is still in use. * src/plugin.h: New API function "can_unload". Removed refcount. 1998-09-17 Miguel de Icaza * src/sheet-view.c (sheet_view_row_size_changed, sheet_view_col_size_changed): If there is a selection of columns or rows, change the sizes of all of the columns. * src/sheet.c (sheet_row_get_distance, sheet_col_get_distance): optimized to be O(n) instead of O(n^2) using (col_row_distance): new routine to compute distances. * src/sheet-view.c (sheet_view_redraw_cell_region): Add the scrolling offset to the x and y positions to draw properly * src/xml-io.c (readXmlSheet): Call sheet_set_zoom_factor to initialize the ->pixels field. * src/expr.h: Valued functions now take a FunctionDefinition * parameter which points to the definition that was used for this function. This is required for the python interpreter. * src/cellspan.c (row_cell_get_displayed_at): row->data might be NULL. (cell_unregister_span): row->data might be NULL. * src/main.c (main): Add support to load more than one file from the command line. Drop requirement for --file option. * src/sheet-object.c (sheet_object_destroy): Keep track of the sheet->objects structure. (sheet_object_create_line, sheet_object_create_filled): Keep track of the sheet->objects structure. (sheet_object_realize, sheet_object_unrealize): Export these functions. (sheet_object_destroy): Keep track of the sheet->objects structure * src/sheet-autofill.c (autofill_cell): Implemented autofill on strings that contains numbers. This allows autofill to handle stuff like "Product1" -> "Product2", ... Wed Sep 16 23:56:59 EDT 1998 Daniel Veillard * src/xml-io.c: started working on object saving/loading. 1998-09-16 Miguel de Icaza * src/cursors.c (cursors_shutdown): Fix bug. Destroy the ith cursor, nor cursor 0 over and over. * src/sheet-autofill.c (type_is_compatible, autofill_create_fill_items): Better type compatible routine. This is required for the list fill type. (autofill_init): startup the autofill code. It registers a number of default lists (weekdays and months for now). 1998-09-16 Tom Dyas * src/plugin-manager.c: Changed where the Remove button was made sensitive so that it actually sync's with the list selection. 1998-09-16 Miguel de Icaza * src/workbook.c: Use the new accelerator setup from gnome-app-helper. * src/sheet-autofill.c (fill_item_new): We now have a working implementation of the Autofill feature. 1998-09-15 Miguel de Icaza * src/sheet-autofill.c (fill_range_new): New routine, used to create a fill_item * src/item-grid.c (item_grid_event): Use the proper cursor depending on the sheet mode. * src/sheet-object.c (object_event): Set the cursor to the arrow. (object_handle_event): Same. * src/cursors.h (cursor_set_widget, cursor_set): New macros to access easily the gnumeric cursors. 1998-09-14 Miguel de Icaza * src/cursors.c: Define the Gnumeric cursors here. (create_bitmap_and_mask_from_xpm): New simplistic function to create cursors from an XPM inlined file. It assumes 3 colors are used: none (transparency), black and white. (cursors_init): Create various cursors for use in Gnumeric. * src/item-grid.c (item_grid_event): Set the fat cross cursor on enter-notify * src/item-cursor.c (item_cursor_selection_event): Handle GDK_ENTER_NOTIFY and GDK_MOTION_NOTIFY to set the X window pointer shape properly according to the position of the mouse pointer. 1998-09-13 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_realize): Fix: initilaize the GdkWindow pointer after we have invoked our parent method. * src/cursors.c: New file. Loads the various cursors used by Gnumeric. * src/item-cursor.c (item_cursor_autofill_event): Implement the cursor growing autofill rules. 1998-09-12 Miguel de Icaza * src/workbook.c (workbook_setup_sheets): Dont let the workbooks take the focus. (do_focus_sheet): Do focus the current sheet on page change. (workbook_setup_signals): Focus the GnumericSheet if no widget has the focus. * src/cell.c (cell_draw): Use the value-specified color. * src/format.c (lookup_color, format_color_init, format_color_shutdown): New routines to use StyleColors instead of color names. 1998-09-11 Miguel de Icaza * src/cell.c (queue_cell, cell_freeze_redraws, cell_thaw_redraws): Support for freezing/thawing cell redraws to avoid the multiple calls that will be produced by appying a format. * src/xml-io.c: Use the new color allocation routines. * src/color.c: Implement color allocation routines with a Color context shared by all of Gnumeric's code. * src/item-cursor.c (item_cursor_realize): Do not allocate colors here now * src/item-grid.c (item_grid_realize): Do not allocate colors manually here now. * src/gnumeric-sheet.c (gnumeric_sheet_color_alloc): Remove. This was a quick hack. 1998-09-10 Miguel de Icaza * src/cell.c (cell_draw): Fix center alignment code. 1998-09-10 Tom Dyas * src/func.c: Made install_symbols public. * src/main.c: initialize the plugins. * src/workbook.c (plugins_cmd): Add a menu option for plugin loading. * plugin-manager.c: New file. Implements the GUI part of the plugin manager. * plugin.c, plugin.h: New file. Support for the dynamically loaded Gnumeric plugin components. 1998-09-10 Miguel de Icaza * src/dialog-cell-format.c (dialog_cell_format): save and restore the last page used during a cell style application. * src/item-edit.c (item_edit_draw): Do not shift the characters one pixel to draw the cursor. 1998-09-09 Miguel de Icaza * src/dialog-cell-format.c (create_background_radio): Use the new pattern selector. (create_foreground_radio, create_background_radio): Use the new gnome color pickers. * src/pattern-selector.c (pattern_selector_select): New widget. This is a patter selector. 1998-09-08 Miguel de Icaza * src/sheet-object.c (sheet_button_press): Lots of changes to finish the editing facilities for objects: you can now resize the objects and you can move them. 1998-09-07 Miguel de Icaza * src/dialog-cell-format.c (apply_font_format): Optimization, walk the row list instead of calling repeatedly the sheet_row_get routine. 1998-09-07 Miguel de Icaza * src/style.h: Color style is now a single color 1998-09-06 Miguel de Icaza * src/sheet-object.c: New file. The support for adding graphical objects to the spreadhseet is here. The main entry point is sheet_set_mode_type which hooks to the signal handlers for object creation. Various routines for per-view creation, destruction are provided. 1998-09-05 Miguel de Icaza * src/parser.y: Add unary '+' * src/gnumeric-sheet.c: Add keybinding for Control-Enter which fills the selection with the current text. * src/sheet.c (sheet_set_text): New function: sets the contents of an arbitrary cell to the text as if it were typed by the user. (sheet_fill_selection_with): Fill the selection with a string. 1998-09-04 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_key): Fix the way the hotkeys were processed (c-a specifically is annoying and all of the control-keys were being consumed before reaching the item-edit). (gnumeric_sheet_key): implemenet control-space * src/dialog-cell-format.c (create_align_page): Connect to the toggled signal of auto return. * src/cell.c (cell_draw): Fix the VALIGN_JUSTIFY case. * src/item-grid.c (item_grid_draw): Redone the cell draw driver. * src/cell.c (cell_draw): Now it returns the number of cells it draw on top of. (cell_calc_dimensions): Unregister the spans when entering, register the span at exit. 1998-09-03 Miguel de Icaza * src/utils.c (int_get_from_range): Bug fix, we were not doing the range thing for the "big" case. Thanks to Alan for finding this bug. 1998-09-02 Tristan Tarrant * configure.in: Included it in ALL_LINGUAS 1998-09-02 Miguel de Icaza * src/cell.c (cell_set_alignment): Bug fix: optimize only if auto_return is the same value that we have set * src/gnumeric-sheet.c: Define lots of cool patterns. Where cool in this sentence is defined as 13 (to leave room for the solid pattern). (gnumeric_sheet_realize): Create the pattern stipples here. * src/file.c (workbook_save_as, workbook_save, dialog_query_load_file): New file, new routines to deal with file save and file load dialog boxes. * src/workbook.c: Improved our toolbar with new actions. * src/xml-io.c: Fixed the order in which parameters were passed to sheet_cell_get/sheet_cell_new * src/sheet.c (sheet_clear_region): Redraw the deleted region. (sheet_clear_region_content): Same. (sheet_cell_remove): same. * src/sheet-view.c (sheet_view_redraw_cell_region): * src/cell.c (cell_set_halign): New routine: Only changes the Horizontal alignment of a cell. (cell_set_format, cell_set_text, cell_set_font_from_style, cell_set_halign, cell_set_alignment): Queue a redraw to a cell before making changes to the properties, to repaint correctly the regions it covers before the change. * src/workbook.c (center_cmd, left_align_cmd, right_align_cmd, set_selection_halign): New routines used to bind the alignment commands from the toolbar. * src/sheet-view.c (sheet_view_redraw_cell_region): Silly mistake fix. Last time I touched this routine i got too excited. I should use *_col_get_distance only for numbers, not rows. My variables were badly named and I thus commmited a mistake, fix. 1998-09-01 Miguel de Icaza * src/dialog-cell-format.c (create_align_page): Added support for the "add returns automatically" formatting option. * src/cell.c (cell_draw): Finished implementing my new drawing scheme. It now supports all of the Excel 5.0 alignements. Added missing calls to cell_calc_dimensions in various spots. * src/workbook.c: Added a toolbar with some actions. 1998-08-31 Tristan Tarrant * TODO: some ideas for key shortcuts (from Excel :-) * src/gnumeric-sheet.c (gnumeric_sheet_key): Implemented page up, page down and home keys. They don't work for selections at the moment. Implemented clear. It currently does a clear_all, but ideally it should pop-up a dialog asking the user what kind of clear he/she wants, as in Excel. Also clearing cells doesn't update the display. 1998-08-31 Miguel de Icaza * src/cell.c (cell_do_calc_dimensions): New routine that computes the dimenssions of a cell based on the alignement constraints of the cell. * src/item-bar.c (item_bar_event): grab the focus when selecting as well. * src/sheet-view.c (sheet_view_redraw_cell_region): Implemented correctly: we now use cell_get_span on every cell in the range to actually compute which areas need to be updated. * src/cell.c (cell_get_span): New routine. Computes the number of columns spanned by a cell. Sun Aug 30 17:19:02 EDT 1998 Daniel Veillard * src/xml-io.c: added saving of the current workbook as one file, added code to load the workbook. Some part are really untested/incomplete especially the style support. * src/main.c (main): added loading of "default.wb" on startup i.e. the default workbook. 1998-08-29 Miguel de Icaza * src/item-bar.c (item_bar_get_line_points): New helper routine, used to create the position of the tracking line for the bar resizing. (item_bar_event, item_bar_start_resize): Fix the incremental tracking. 1998-08-28 Miguel de Icaza * src/sheet.c (sheet_row_set_internal_height): New routine used to change the heigh of a sheet. Now we also keep a variable to see if the user has hardcoded the dimensions of the row. (sheet_compute_visible_ranges): New function to compute the visible ranges of the Sheets. * src/item-edit.c (item_edit_init): Init all values. (item_edit_set_arg): Set the child bounds (item_edit_draw): Use the style font for the current cell when drawing the cell. * src/dialog-cell-format.c (apply_font_format, create_font_page): New cell property configuration page: font selector. * src/cell.c (cell_set_font, cell_set_font_from_style): New routines to change a cell's font. * src/item-bar.c (item_bar_start_resize): Fix routine after the massive changes of yesterday. 1998-08-28 Miguel de Icaza * src/format.c (format_number): Rewrote the format parser. I took Chris's number formatting routine and made it a number-rendering only thing to support the complexities of the Excel formating codes. 1998-08-27 Miguel de Icaza * src/format.c (format_number): Add support for text quoting inside a format (double quotes and single character quotes); Add support for space skipping (_) and concatenation of the allowed characters. Added color lookup. * src/sheet-view.c, src/sheet.c, src/gnumeric.c: Massive changes to the structure of the code to accomodate the fact that we should be able to have multiple views for a single sheet. 1998-08-26 Miguel de Icaza * src/sheet.c (sheet_clear_region_content): New function to remove the contents of a region of cells. * src/dialog-zoom.c (dialog_zoom): Add Zoom window. * src/style.c (style_color_new, style_color_ref, style_color_unref): New functions. Color for a cell will be kept as part of the style. Hack note: if valid_flags reports STYLE_COLOR style->color might be NULL: this means use the default sheet colors for this cell. * src/cell.h: Get rid of GdkColor field. * src/item-grid.c (item_grid_draw_cell): Draw selected cells smartly. Now we invert the resulting area (this works for my 16-bpp display, have to try the XOR trick tomorrow on a paletted display). (context_clear_cmd): New context command that clears the content of a cell region. 1998-08-25 Miguel de Icaza * src/sheet.c (sheet_row_selection_changed, sheet_col_selection_changed): Use sheet_selection_clear_only to avoid getting two selections. (sheet_col_add): Keep track of the last used columns/rows. (set_tip_label): New routine to set the tooltip to the value of the current scroll section (vertical_scroll_change, horizontal_scroll_change): Update the tooltip to reflect the current value. (vertical_scroll_event, horizontal_scroll_event): Create and destroy the tooltips (sheet_col_add, sheet_row_add): Keep track of the maximum sheet size (sheet_delete_col): New public routine. (sheet_delete_row): New public routine. (sheet_move_column): New helper routine, it was part of sheet_insert_col before. (sheet_insert_row): Manipulate the structures carefully. I was changing a list that I was using. * src/dialog-delete-cells.c (dialog_delete_cells): Use sheet_delete_col, sheet_delete_row. This completes this dialog box. 1998-08-24 Miguel de Icaza * src/sheet.c (sheet_shift_row): Bug fix: We can not be making changes to the column/row lists when we are walking them. * src/cell.c (cell_formula_relocate): Re-parse the expression after relocating the formula: the resulting expression might have invalid cell references. * src/sheet.c (sheet_shift_col): Implement the column shift operation. 1998-08-23 Miguel de Icaza * src/dialog-cell-format.c (apply_align_format): Actually store the style selection on the computed style. * src/eval.c (intersects): Write in terms of range_contains. * src/utils.c (range_contains): New utility routine. * src/style.c (style_destroy): It now allow (style_merge_to): Implement new routine for gradually compute the full value of a style. (style_duplicate): Make the routine duplicate only the valid fields, not all of them. (style_destory): account for the fact that now we might have non-complete styles. (sheet_style_compute): Make it fully functional. * src/sheet.c (sheet_cell_formula_link, sheet_cell_formula_unlink): Now we maintain the dependencies at formula link/unlink time (sheet_shift_row, shift_insert_col, shift_insert_row): Compute the dependencies for any changed cells and recalculate. (sheet_style_attach): Implement. (sheet_destroy): Destroy the column and row information. * src/item-grid.c (context_insert_cmd): Use the dialog_insert_cells instead of the dummy test code we had before. * src/workbook.c (insert_cols_cmd, insert_rows_cmd): Implement. 1998-08-22 Miguel de Icaza * src/sheet.c (sheet_redraw_all): Redraw also the column and row bars. (sheet_insert_row): Fix. I was accessing the wrong information; Fix, on the row selection code; (sheet_cell_add): Recompute the dimensions properly of the cell after insertion (this is to fit the use of this routine in a new context). (sheet_shift_row): Fix the * src/dialog-insert-cells.c (dialog_insert_cells): Learn to use GtkCauldroun's way of dealing with radio buttons. * src/sheet.c (sheet_selection_paste): Now the clipboard fills the region which is the union of the current selection and the information in the clipboard. * src/clipboard.c (clipboard_paste_region): Check the region where we pasted for possible dependencies, and if so, queue a recalc. (clipboard_paste_region): It now takes a region to be filled instead of just using the contents of the clipboard. * src/eval.c (search_cell_deps): Updated to search on cell ranges instead of a single cell. (region_get_dependencies): Get dependencies for a complete region. (cell_get_dependencies): Reworked to use new scheme 1998-08-21 Miguel de Icaza * src/dialog-insert-cells.c: New file. Handle the insert cells dialog box. This uses GtkCauldron for the first time. That routine is soooo cool! * src/sheet.c (sheet_cell_remove): Remove the memory used by the key in the hashtable as well. (sheet_insert_col): new routine used to insert columns in the spreadsheet, it is pretty elaborate. (sheet_col_destroy, sheet_row_destroy): New routine used by the column-overflow logic in the insertion routines. (sheet_cell_add): Only attach a style to a cell if it does not have any yet. (sheet_move_row): New routine: shifts a row a number of columns. (sheet_verify_selection_simple): New routine for warnging about the multiple-selections case. In the future it should provide a help context. (sheet_insert_row): Implement this new routine. * src/clipboard.c (paste_cell): Simplify. * src/cell.c (cell_make_value, cell_formula_relocate): New routines based on the code that was done for the clipboard. Now they are used in other places as well. cell_make_value actually fixes a potential bug that caused formulas to reappear magically on paste-values commands (never hit the bug, but it was there, I swear to god). 1998-08-20 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_set_cursor_bounds): New routine to set the cursor bounds. * src/sheet.c (sheet_selection_paste): Set the cursor and the selection to the new spot. * src/dialog-paste-specia.c: Move the dialog code here. * src/format.c (format_number): Do not abort after we have processed the whole format, but rather append the rest of the format string. (style_entry_free): Kill the warnings 1998-08-20 Chris Lahey * src/style.h: Added StyleFormatEntry and changed StyleFormat. * src/format.c: Added multi-field formatting. format_text now takes a StyleFormatEntry. (check_valid): Returns true if the given StyleFormatEntry is applicable to the given value. 1998-08-19 Miguel de Icaza * src/format.c (format_value): The new entry point for formating values. This takes a Value instead of a float. NULL is never returned from format_value now: if there is a format error, then value_string is used to display it. (format_compile): This routine should always return, it cant fail, in the worst * case it should just downgrade to simplistic formatting. (format_destroy): This routine is invoked when the last user of the format is gone (ie, refcount has reached zero) just before the StyleFormat structure is actually released. resources allocated in format_compile should be disposed here * src/sheet.c (sheet_cursor_set): New function. Use this instead of the view-specific routine (gnumeric_cursor_set). * src/gnumeric-sheet.c (gnumeric_sheet_can_move_cursor): ':' is a valid separator for activating the cursor-cell selection mode. * src/cell.c (cell_auto_align): New function. This tries to auto-align the cell contents depending on the value type. * src/dialog-cell-format.c (cell_properties_apply): Create a single style that is attached to a region and let each property page fill the structure in. (apply_align_format): Implement. No wonder it was not working last night. (apply_number_formats): Fill the passed Style structure only. Remove obsolete code. * src/sheet.c (sheet_cell_new): New cells are born with auto-style flag turned on. * src/clipboard.c (paste_cell): Render the cell after computation is finished. Clean up the usage of the cell manipulation; make auto-style work on pasted cells. * src/str.c (string_ref): Return the value referenced. * src/item-cursor.c (item_cursor_do_drop): New function: Handles the action from the cursor drag operation. * src/gnumeric-util.c (run_popup_menu): New utility function to popup menus created from an array of strings. * src/sheet.c (sheet_selection_cut, sheet_selection_copy): They now return whether it was possible to perform the operation. 1998-08-18 Miguel de Icaza * src/cell.c (cell_set_alignment): Provide a way to change the cell alignment. * src/dialog-cell-format.c (create_align_page): Implement the cell formats/alignment page. * src/item-cursor.c (item_cursor_realize): Add stypple support for drag and autofill cursors. * src/gnumeric-sheet.c (gnumeric_sheet_compute_visible_ranges): Make the selected column and row be always fully visible (ie, use the ->last_full_[col|row] instead of last_visible_[col|row]. * src/cell.c (cell_set_format): Call cell_queue_redraw after changing the cell contents. 1998-08-18 Chris Lahey * src/format.c (format_number): Fixed the small '.' error. (decimal point shown even if not requested in numeric conversions.) 1998-08-17 Miguel de Icaza * src/eval.c (cell_eval): Use the formating routine now. * src/expr.c (value_format): Format a Value with a StyleFormat. * src/item-cursor.c (item_cursor_set_bounds_visibly): Force a canvas update after moving the selection. * src/sheet.c (sheet_selection_to_list): New function: generates a list of cells from the sheet->selections list. * src/style.c: Now styles have a "valid_flag" that has a bit turned on for those parts of the style that are actually used. This is required for adding the regions of style application in a Sheet. (style_destroy): destroy only those valid parts in a style. * src/dialog-cell-format.c: New file. Implements the cell/format dialog box. * src/cell.c (cell_render_value): new routine used to render the cell->value into cell->text. (cell_queue_redraw): new routine to queue individual redraws of the screen. I believe it is buggy, as the screen does not update after an apply in the cell/format dialog box. (cell_set_format): New routine to change the format of an existing cell. * src/format.c (format_number): Added color argument; smaller fixes to use it within gnumeric. * src/main.c (main): Include i18n setup as per namsh's suggetion. 1998-08-15 Chris Lahey * src/format.c: Merged format_text and format_date into format_number. Added parsing of am/pm. Added a short format description. 1998-08-15 Miguel de Icaza * src/item-cursor.c (item_cursor_drag_event): Make the drag cursor actually dragable. * src/item-grid.c (item_grid_event): Use the converted cordinates. (item_grid_find_row, item_grid_find_col): Rename and export these routines to be used by the ItemCursor. * src/gnumeric-sheet.c (gnumeric_sheet_key): Do not remove the selection string when the input has been accepted. * src/expr.c (expr_tree_ref): Strategy change: Now every ExprTree node is properly refcounted, as soon we will start sharing parts of the ExprTree between cells. (do_expr_decode_tree): Decoding an expression now takes into account the precedence of the operators and uses paretheses only when they are actually required. 1998-08-14 Miguel de Icaza * src/item-grid.c (item_grid_event): Implemented context sensitive menu for the grid. (item_grid_event): Use instead of for extending a selection * src/clipboard.c (clipboard_paste_region): After pasting, trigger a recalculation. 1998-08-14 Jaka Mocnik * src/clipboard.h: changed PASTE_ALL to PASTE_ALL_TYPES. * src/gnumeric-util.c (gtk_radio_group_get_selected): changed to work. I guess it is a bit weird trying to access a next member of an int ;). 1998-08-13 Miguel de Icaza * src/workbook.c (workbook_set_region_status): Support going to a cell by typing the cell name on the entry line. (workbook_parse_and_jump): new routine for jumpting to a specific cell. * src/dialog-goto-cell.c: New file. Implements the goto cell dialog box. * src/clipboard.c: implemented paste-special dialog box. (clipboard_paste_region): Redraw after clearing and after each cell is pasted. * src/sheet.c (sheet_selection_changed_hook): Display the current selection. (sheet_selection_walk_step): Fix the movememnt code to walk correctly over the selection. * src/cell.c (cell_formula_changed): New function used to notify of a cell formula change (required for recomputation and to add the cells to the proper computation lists). * src/expr.c (expr_decode_tree): Goes from ExprTree to a string representation. This is required when copying cell values to recompute the string that is displayed to the user. * src/util.c (cellref_name): New function, get a string representation for a CellRef. (parse_cell_name): New function, returns integers for col, row from a cell string representation. Thu Aug 13 19:08:28 1998 Tom Tromey * src/xml-io.c: Look in gnome-xml for tree.h and parser.h. Thu Aug 13 00:02:23 EDT 1998 Daniel Veillard * src/xml-io.c : adapated to the new version 0.2 of the xml lib 1998-08-11 Miguel de Icaza * src/fn-math.c (gnumeric_bin2dec): finish implementation of BIN2DEC * src/item-grid.c (item_grid_event): Call gnumeric_sheet_accept_pending_output before moving the cursor. * src/item-cursor.c (item_cursor_event): Event handler for the item_cursors. * src/item-cursor.h: More cursor types: ITEM_CURSOR_AUTOFILL (for the case where the small drag box is used) and ITEM_CURSOR_DRAG (for when the item is being dragged). * src/clipboard.c (clipboard_paste_region, clipboard_copy_cell_range): New functions for cut and paste support. * src/cell.c (cell_destroy, cell_copy): New functions. Preparing for cut and paste support. * src/expr.c (value_copy_to): Finish implementing all cases. (value_duplicate): New function. Duplicates a value. * src/sheet.c (sheet_cell_remove): Implement a way to remove cells. * src/eval.c (workbook_recalc): New recomputation strategy: We now keep a generation flag for determining whenever a cell value has been recomputed for this generation. The generation variable is a char. Everytime we are about to overflow the char, we walk the list of formulas and reset the generation flag. 1998-08-10 Miguel de Icaza * src/eval.c (workbook_recalc): Queue computation for cells that have been recomputed. * src/expr.c (eval_expr): Implement the concatenation operator. 1998-08-09 Miguel de Icaza * src/expr.c (eval_expr): Implement comparission. * src/str.c (string_unref_ptr, string_unref): Remove the string from the string_hash_table when the refcount reaches zero. * src/symbol.c (symbol_unref): Remove the symbol from the hash table when the refcount reaches zero. 1998-08-07 Miguel de Icaza * src/gnumeric-sheet.c: Renamed all references to (GnumericSheet *) called "sheet" to "gsheet". * src/sheet.h: Renamed parent_workbook in to be workbook. * src/cell.h: Include a Sheet * in the cell. Make routines that required a Sheet parameter only use the Cell parameter now. * src/eval.c (add_tree_deps, cell_add_dependencies, add_value_deps, dependency_hash_init, dependency_hash, dependency_equal): New functions to maintain the DependencyRanges. * src/fn-math.c (gnumeric_max): Implemented function MAX. (gnumeric_min): Implemented function MIN. 1998-08-06 Miguel de Icaza * src/expr.c (eval_expr): Implemented exponentiation. Removed the code that used GMP. * src/parser.y (yylex): Bug fix: allocate the string. * src/sheet.c (CRowSort): Sort in the other direction my list of cells. (sheet_cell_foreach_range): Iterate over the lists with ->next, not with ->data. Important bug fix. * src/parser.y (return_cellref): Fix the cell parsing routine to store the correct information. * src/fn-math.c: Moved the math functions to this file. (gnumeric_sum): Make it use the new function_iterate_argument_values. (gnumeric_and): Implement AND function. (gnumeric_or): Implement OR function. * src/func.c (function_iterate_argument_values): New function to ease the creation of functions with multiple arguments. It generates Value * for a list of expressions that might include arrays and cell ranges. * src/expr.c (cell_get_col_row): New routine to get the absolute cordinates with respect to an evaluation column and row. * src/parser.y (return_symbol): Support for constants. * src/expr.c (value_copy_to): Support for making Value copies (only used for our constants actually). * src/symbol.c (init_constants): Declare TRUE and FALSE. * src/sheet.c (sheet_selection_changed_hook): Autocomputation routine. Whenever selection changes this routine will execute an arbitrary expression (kept in the workbook) and display the result. 1998-08-05 Miguel de Icaza * src/expr.c (value_release): Release the value. (value_release): Add support for arrays. * src/symbol.c (g_strcase_hash): Use case insensitive hash tables. * src/item-bar.c (item_bar_unrealize): Call parent unrealize (item_bar_realize): Call parent realize * src/item-grid.c (item_bar_unrealize): Call parent unrealize (item_bar_realize): Call parent realize * src/item-cursor.c (item_bar_unrealize): Call parent unrealize (item_bar_realize): Call parent realize. (item_cursor_point): Implement correctly. * src/expr.c, parser.y (eval_expr): Added comparission operators. * src/fn-sheet.c (gnumeric_if): Implemented IF function. Implemented SELECTION function. * src/func.c (gnumeric_sum): Implement SUM function. 1998-08-05 Miguel de Icaza * src/expr.c (eval_funcall): No need for the the extra argc parameter on the functions with strong prototypes. * src/func.c (gnumeric_cosh): More functions. * src/item-edit.c (item_edit_set_arg): * src/gnumeric-sheet.c (cancel_pending_input): Cancel changes made. (start_editing_at_cursor): Make a copy of the original text, and clear the actual text to fix the redraw problems. * src/item-edit.c (item_edit_set_editor): Make the cursor be in sync with the GtkEntry by hooking to the "event" signal and catching key press and key release events. * src/func.c: More functions added. * src/symbol.c (g_strcase_equal): Symbol hash table does is case-insensitive. * src/expr.c (eval_funcall): Added function evaluation. 1998-08-03 Miguel de Icaza * src/eval.c: New file. Move the evaluation routines here. * src/func.c: Functions will go here. * src/parser.y (alloc_glist): Keep track of argument lists. 1998-07-30 Federico Mena Quintero * src/sheet.c (canvas_bar_realized): * src/gnumeric-sheet.c (gnumeric_sheet_realize): Neat X hack: set the window backing pixmap to NULL, so that the window does not get cleared when it receives an exposure event. It will just leave whatever bits were on the window when the expose happened. This allows us to avoid flicker. *** MIGUEL, LOOK AT THIS *** * src/gnumeric-sheet.c (gnumeric_sheet_make_cell_visible): Fixed width/height confusion (cut&paste bug). * src/sheet.c (new_canvas_bar): Set outrageously big scrolling limits. This has to be fixed to use the real sheet's dimensions. (sheet_new): Use correct table expansion parameters. * src/sheet.c (sheet_set_zoom_factor): Use gnome_canvas_scroll_to(). * src/gnumeric-sheet.c (gnumeric_sheet_set_top_row): Scroll using gnome_canvas_scroll_to(). (gnumeric_sheet_set_top_col): Likewise. (gnumeric_sheet_make_cell_visible): Get the offsets using gnome_canvas_get_scroll_offsets(). (gnumeric_sheet_make_cell_visible): Use gnome_canvas_scroll_to(). * src/gnumeric-sheet.c (gnumeric_sheet_color_alloc): Query the colormap with gtkdget_get_colormap(), because the canvas structure no longer has a colormap field in it. (gnumeric_sheet_set_top_row): Use the canvas layout adjustment to scroll. (gnumeric_sheet_set_top_col): Use the canvas layout adjustment to scroll. (gnumeric_sheet_make_cell_visible): Get the values from the canvas adjustments. * src/sheet.c (new_canvas_bar): Call gnome_canvas_new() correctly. (scroll_to): New helper function to scroll a canvas. (sheet_set_zoom_factor): Use scroll_to(). * src/gnumeric-sheet.c (gnumeric_sheet_create): Do not call gnome_canvas_construct() at is does not exist anymore. (gnumeric_sheet_new): Use outrageously big values for the canvas scrolling region, for now. This needs to be fixed. (gnumeric_sheet_make_cell_visible): Use the canvas layout adjustment to scroll. 1998-07-30 * 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 * 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. 1998-07-28 * src/sheet.c (sheet_cell_new): Insert the row, not the cell in the column list. (sheet_cell_foreach_range): Fixety fix 1998-07-27 * src/sheet.c (sheet_cell_new): Cells are born with their propper width. (cell_set_text): Width should include the margins. * 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. Sun Jul 26 17:39:53 EDT 1998 Daniel Veillard * configure.in: added GNOME_XML_CHECK * src/Makefile.am: added xml-io.c to GNUMERIC_BASE_SOURCES and GNOME_XML_LIB to gnumeric_LDADD and test_parser_LDADD * src/xml-io.[ch]: Added, provides saving to XML format * src/main.c: added currentWorkbook global variable * sheet.h: added currentWorkbook global variable * workbook.c: added currentWorkbook global variable, a Save menu with save_cmd callback. * src/sheet.c: cell_set_text, initialized is_float to zero * doc/saving.txt: Added, what to be saved and first example. 1998-07-25 Miguel de Icaza * src/item-cursor.c (item_cursor_draw): Minimal code to support the anted-cursor. There is a bug, I just dont know where :-) * src/gnumeric-sheet.c (gnumeric_sheet_key): Added support for selecting cell values with the cursor keys. (start_cell_selection): Starts the interactive selection of a cell (stop_cell_selection): Stops the interactive selection of a cell. (selection_remove_selection_string): Removes the text that has been inserted into the text line for selection purposes. (selection_insert_selection_string): Updates the entry with the contents of the selection range. (selection_expand_vertical, selection_expand_horizontal): Expands the selection. * src/item-cursor.h (item_cursor_set_bounds): Change prototype to reflect actual argument names. I was a victim of my own lazyness. * src/gnumeric-sheet.c (move_cursor_vertical, move_cursor, move_cursor_horizontal): Renamed to allow formatting in 80 columns. * src/utils.c (cell_name): New routine. Renders a cell name. * src/sheet.h (IS_SHEET): Added a signature to Sheet strucutres and a signature to test with. * src/symbol.c (symbol_ref_string): New function: it makes sure a symbol exists: it either increases the refcount for an existing string, or creates it. 1998-07-24 Miguel de Icaza * src/workbook.c (workbook_get_current_sheet): New function. * src/sheet.c (cell_set_formula): New function. Loads a cell with a formula. * src/parser.y (eval_value_string): New routine to return a string representation of a Value *. This should use the format.c that Chris is working on, but we need Chris to commit his changes ;-). For now it uses %d and %g. * src/numbers.h: Compatibility functions to make the code work with or without GMP. * src/gnumeric-sheet.c (gnumeric_sheet_set_current_value): Sets the value to whatever happens to be on the input line. * src/expr.c (eval_cast_to_float): New function: casts a value to float. (eval_cell_value): new function. (eval_node_value): evaluates the expression tree. * src/cell.h: Keep the computed value as well. Sat Jul 25 14:10:23 1998 Tom Tromey * src/Makefile.am (test_parser_LDADD): Added INTLLIBS. (test_format_LDADD): Likewise. (check_PROGRAMS): Renamed from noinst_PROGRAMS. * src/format.c (do_roundup): Renamed from roundup (my Linux install has a 2-argument `roundup' macro in sys/types.h). Now static. 1998-07-25 Nuno Ferreira * configure.in (ALL_LINGUAS): Added "pt". 1998-07-21 Miguel de Icaza * 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. 1998-07-17 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_key): Add support for keyboard-selection. * src/item-edit.c (item_edit_destroy): Request a repaint for every area we touched at destruction time. * src/sheet.c (sheet_redraw_cell_region, sheet_redraw_selection): New functions to request that only a specific range of cells be redrawn. (sheet_selection_extend_vertical, sheet_selection_extend_horizontal): new routines to deal with mouse selection. Use those functions all over sheet.c 1998-07-19 Federico Mena Quintero * src/gnumeric-sheet.c src/item-bar.c src/sheet.c: Removed the canvas parameter from calls to gnome_canvas_item_new(). 1998-07-18 Raja R Harinath * src/Makefile.am (noinst_PROGRAMS): Don't bother installing `test-format' and `test-token'. 1998-07-15 Miguel de Icaza * src/gnumeric-sheet.c (gnumeric_sheet_cursor_set): Add tracking. * src/sheet.c (sheet_destroy): Add destructor. (sheet_selection_append): New functions for managing the cell selection. * src/style.c (style_destroy): Add destructor. 1998-07-13 Miguel de Icaza * src/item-edit.c: New file. Adds the editing widget to the spreadsheet. 1998-07-15 Federico Mena Quintero * src/item-bar.c (item_bar_event): Use gnome_canvas_item_grab/ungrab() now that they exist. 1998-07-14 Federico Mena Quintero * src/item-bar.c (item_bar_realize): Set the item_bar->gc's foreground color to black (it is by default initialized to pixel value 0, which is not black on all default colormaps). (bar_draw_cell): Center the cell's text correctly. * src/gnumeric-sheet.c (gnumeric_sheet_create): Use gnome_canvas_construct() to initialize the canvas. * src/item-bar.c (get_col_name): Fixed generation of column names. (get_row_name): Rows are numbered from 1, not 0. Also, assert that the row number is less than 65536. (item_bar_event): Grab/ungrab the mouse on button press/release. (item_bar_event): On motion_notify, only call set_cursor() if we are not resizing. (item_bar_event): Only take care of enter_notify events if we are not resizing. * po/es.po configure.in: Added Spanish translation. 1998-07-12 Miguel de Icaza * src/item-bar.c (item_bar_event): Do world->canvas cordinate conversion to get zoomed resizng working). (bar_draw_cell): Minor look fix. * src/sheet.c (sheet_row_set_height): Silly mistake, add the newly created rowinfo to the row array, not the column array. 1998-07-11 Miguel de Icaza * src/style.c (style_duplicate): New function. Does style duplication. * src/sheet.c (sheet_new): Simple hook signals to test the code. * src/item-bar.c (item_bar_class_init): Added signals: size_changed and selection_changed. (item_bar_event): Add support for resizing columns and rows. 1998-07-10 Miguel de Icaza * src/style.c: New file. Implement the style manager for the spreadsheet. 1998-07-09 Miguel de Icaza * 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. * src/item-grid.c: New paint strategy for the grid (uses what apparently Excel does); It now correctly uses the coordinate system from the canvas (ie, zoom in and zoom out work); * src/item-cursor.c: Implemented new version of the cursor. I am using black lines for the cursor. One day, when I find the strenght, I will use inversion and the inversion will do the right thing. * src/item-bar.c: New file. Implements the titles for the columns and rows; * src/*: made stuff fit together. 1998-07-06 Raja R Harinath * configure.in: Remove duplicated AM_GNU_GETTEXT. Sat Jul 4 15:07:49 PDT 1998 Manish Singh * fixed up intl autoconf stuff 1998-07-04 Chris Lahey * src/Makefile.am (bin_PROGRAMS): Added test-format to compile the formatting tests. * src/format.c (format_time): Added date formatting. (format_text): More accurate numeric formatting. 1998-07-03 Chris Lahey * src/format.c: New file to do excel style number formatting. 1998-07-03 Chris Lahey * ChangeLog: Cleared the gnome-games entries from the ChangeLog.