2007-08-31 (1.1.015) * Adapted and tested for LispWorks 5.0: ** for LW5, cursor files are being loaded via capi:load-cursor during compilation and should not be delivered and loaded in run-time. + To run smoothly on a "clean" LispWorks installation, added two small pieces of code to INSTALL.lisp and ygrid.asdf accompanied bye the corresponding note in readme.txt: ++ (require "selection-mode") ++ (dolist (color CAPI-WIN32-LIB::*SYSTEM-COLORS*) (color:define-color-alias (find-symbol (slot-value color 'keyword) :win32) (slot-value color 'CAPI-WIN32-LIB::COLOR))) 2007-08-15 (1.0.014) + Added the leftmost non-scrollable (aka frozen) columns feature. ++ added ygrid slots left-frozen-ncols and left-frozen-width ** cell-at-position signature is the same: (grid visual-x y), but the second argument provides a visual coordinate instead of internal. 2007-04-01 (1.0.013, Professional Edition only) * datasheet.lisp: changed signature of the following generics: ** read-datasheet (interface grid name), ** write-datasheet (value interface grid name). + Added file menus.lisp of code implementing popup menus via ++ pinboard-post-menu helper, ++ generic cell-popup-menu-items of signature: (grid record column). 2007-01-01 (1.0.012) * Changed signature of addition-maker: (), i.e. the argument list is empty; ** the special *grid* is now bound during the call of addition-maker; ++ the internal list-addition-maker is supplied as a default addition-maker. * Changed signature of call-data-writer: (value grid data column), ** the special *grid* is now bound during the call of call-data-writer. * Changed signature of ** cell-value: (grid &optional row-or-record column-designator), ** (setf cell-value): (value grid &optional row-or-record column-designator); moreover, cell-value is an ordinary function from now on. * Generic record-on-delete ** changed signature: (grid record), i.e. removed optional paramater interactive; moreover, this function is not called for a new record any longer. ** the call of the delete-callback removed from the default method and moved to the delete-record function; consequences: - no dedicated error protection during delete-callback, - it cannot rollback the record deletion process any longer. + Added event generics: ++ cell-on-cancel (grid column); is invoked on pressing the Escape key even within overlays, e.g. capi:editor-pane. ++ record-before-change called when the very first cell was just altered and the new value is about to be written to record-data. ++ record-on-revert, which reverts all column data; the supplied method restores old values from the (changed record) alist. ++ grid-confirm-delete (grid object &optional interactive); it provides custom inquery to delete current row or selected objects. ++ capi:interface-activate-callback for non-top-level grid (usually the case) acts like "grid-on-enter"; it is invoked when either the pinboard or an editing overlay receives focus and could help indicating which grid is current within the containing interface. + Added ygrid change-callback slot - either NIL or function of signature: (top-level-interface grid). + Added ygrid slots: ++ allow-additions, allow-edits, and allow-deletions, which actually count the number of records added, updated, and deleted correspondingly. + utils.lisp: added functions: ++ unhide-column; ++ focus-grid (along with the focus parameter to fetch-grid and load-grid). * search-grid.lisp: function find-next: ** for search mode other than :data, avoid applying the print-function to null subject; ** amended repeat of last search with empty pattern and mode :all. * core.lisp: ++ added # preventing any revert on auto-record, ** generic %operate-cell renamed to cell-on-operate. + More values accepted by the :navigation-buttons initarg in addition to T and NIL: ++ a string provides an alternative title to the default "Record", ++ :no-hint means eliminating the title at all. * Fixed bug in %invalidate-grid and %filter-on when all records get filtered out. 2006-03-25 (0.5.011) - Removed directories ylib and ywidgets - they are downloaded separately from now on. * Changed signature of generic function unload-grid: (grid name &key redraw-now) * basics.lisp: due to bug introduced by LWW 4.4.6 patch release, two title panes moved from navigation-toolbar to footer-layout and pinboard-on-resize changed accordingly. * From now, the success of operation is indicated by methods on record-on-delete or record-on-update, not by delete-callback or update-callback. Values returned by these callbacks are thrown out. * Record property :modified-columns renamed to :changed pervasively. * utils.lisp: ** now the after method on fetch-grid invokes current-callback (if any) for an auto-record, i.e. the record with null record-data; but the record-on-enter is invoked for a filled record as before. ++ added function goto-record. 2005-09-03 (0.4.010) * changes in ylib/locale.lisp and ywidgets/capi-hacks.lisp 2005-08-21 (0.4.009) FOURTH RELEASE * Changed signature of graphics-args-function: (grid record column). + The :select-record initarg added to ygrid to control highlighting of the entire row. + Superclasses text-display-column and text-input-column-mixin introduced. * Rendering check button columns reimplemented via gp:draw-image instead of drawing separated lines. + ygrid.asd provided, thanks to Edi Weitz. * Small fixes and improvements. * Changes in YSTOK-WIDGETS subsystem: ++ editable-pinboard framework introduced basing on the following classes: editing-pane-mixin, editable-pinboard, and editable-pinboard-object-mixin. The Professional Edition of YstokGrid is announced. It additionally includes: + Class overlayed-choice-column for columns based on various CAPI panes for editing. + Subclasses text-choice-pane-column and option-pane-column. + Saving and restoring user preferences: ++ values of row height and column widths (including the header row and column), ++ grid searcher coordinates, ++ editing pane font for text-input-column, ++ the Enter key behavior. + Clipboard functions for exchanging data with other applications. 2004-09-29 (0.3.008) THIRD RELEASE + Added search-grid.lisp implementing grid-searcher "Find what" dialog + Added toolbars.lisp factoring out standard records menu and toolbar. * Various changes in YSTOK-WIDGETS subsystem. 2004-02-10 (0.2.007) * column-header.lisp, row-header.lisp: resizing headers with a mouse gesture added. 2004-01-08 (0.2.006) * core.lisp: %revert-record now revert the current cell buffer as well. * utils.lisp: revert-record now tries to revert the current cell if no record editing in process. * Multiple declarations were added pervasively and code was improved slightly for the sake of speed. 2003-11-25 (0.2.005) * ywidgtes/defsys.lisp - Excluded unneeded lockable-pane.lisp from the YSTOK-WIDGETS subsystem 2003-11-24 (0.2.004) SECOND RELEASE * Added sorted-grid.lisp: a sublclass providing built-in sort and filter facilities 2002-12-23 (0.1.003) * core.lisp - Redefine interface igrid so that its background is always left intact, i.e. 3d. Method (initialize-instance :after ((interface igrid))) passes background and foreground parameters directly to pinboard. - (pinboard-on-resizing) gets invoked on startup with width=1 and height=1 according to the error reported by Francisco Rivera. This resulted in error (= 0 nil) later, so an additional test was provided. * images/recnavi.bmp is replaced by a monochrome bitmap. 2002-12-17 (0.1.002) * core.lisp - (pinboard-redraw) Gp clearing and (*background-cleared* t) are used more cautious to avoid excessive flickering on redrawing. - (%reposition-pane) "Pane inside visible area" predicate is now more rigid, so that pane will recieve focus only when inside by vertical dimension. * row-header.lisp - (row-header-button-1-release) Returns focus back to pinboard on selecting row. 2002-12-15 (0.1.001) Dmitriy Ivanov * Initial release.