Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Another fix from Mike Watters.
Fix from Mike Watters.
Change over-eager call to DIRECTORY for pathname completion... should now use the entered input to create the wild pathname. Assumes Unix-style wild pathnames, but the whole pathname completion thing is Unix-specific anyway, so...
Fixed STRING-INPUT-EDITING-STREAM to not fail on many common use cases.
Fix the utterly broken ACCEPT-FROM-STRING to at least work for common cases. Still WIP.
Moved with-input-context and related machinery to to presentations.lisp.
Moved with-output-as-presentation to presentations.lisp, so it can be available when input-editing.lisp is compiled.
Changed `highlight-current-presentation' to use its provided frame and input-context, instead of `*application-frame*' and `*input-context*'.
`accept-from-string' is still WIP, but it should cause fewer compiler warnings now. The remaining one is actually out of our control, in fact, an SBCL hacker would be welcome to fix it, if that is possible.
Made the `string' present method respect the :accept keyword argument, updated an example program to exploit this.
Introduce a new function, highlight-output-record-tree, so that records can control how highlighting recurses into their children. Revise definition of null output records to include any record whose upper-left and lower-right coordinates are equal. This is necessary when an empty record is transformed (such as by with-room-for-graphics).
Fixed `presentation-history-previous' to work properly with an empty history.
Mostly fix AND and OR presentation types in STUPID-SUBTYPEP (used for translator applicability) and PRESENTATION-SUBTYPEP. Add some tests for predefined presentation types.
A partial fix to add support for AND and SATISFIES in presentation-subtypep, where they were previously not supported. Christophe has a better one to replace this with soon. Also added an accept method for AND types.
Improve presentation history - is now explicitly a stack, and works pretty much as you would expect. Goatee's support is temporarily broken until I can make `define-input-editor-command' also define commands for Goatee.
Moved presentation method to after the definition of the relevant type.
Hopefully fixed `presentation-type-specifier-p'. Of course, I also thought this the last two times.
Fixed presentation-type-specifier-p to do as certain older CLIM programs expect.
Added support for `presentation-type-specifier-p'.
The presentation history functions are now named more sensibly. Also, a change to `accept': we add the object to the presentation history of the type that was asked for, not the type that was returned. Input history should work in the Listener now (but there are still issues for non-trivial forms, unfortunately).
Added new presentation methods for pathnames, based on the ones in ESA. We now have completion and an attempt at handling the multide of evils that a programmer can inflict upon a poor CLIM implementations attempt to textually represent a pathname object. I do not claim these methods are fail-proof, so please show some restraints wrt. what kind of nastyness you feed them.
Added support for navigating presentation histories in Drei. Use M-p and M-n to browse previous input for a specific presentation type.
Committed changes necessary to support Drei (and non-Goatee input editors at all). Also some indirection permitting run-time selection of editor substrate and the code for :text-editor and :text-field gadgets.
Many more generic function defgenerics in decls.lisp ... moving some out from their individual files. ... one or two tiny code cleanups I think the only substantive changes in this commit are: * remove the workaround for sbcl-0.9.8 broken forward-referenced-class metacircularity; * delete the unused uniform-design protocol-class; * put the standard-sheet-input-mixin as a superclass of standard-extended-input-stream, not of the protocol class extended-input-stream. If someone wants to tell me that these things are wrong, that's fine; at least some things appear still to work. Now we only emit 209 style warnings when loading mcclim under sbcl. (When compiling and loading, it's closer to 500). This commit cures all but a few redefinition style-warnings -- so now almost all generic functions are defined before the first method definition is seen. It doesn't cure implicit definition of generic function style warnings, so there are probably plenty of specified generic functions which are not explicitly defined. (Leaving aside the issues with unspecified generic functions) TODO: * DEFGENERIC* forward declarations * specified methods and macros * specified special variables * unification of protocol-classes and decls
Change the input editing text cursor from the disturbing outline to solid. Do something a bit more intelligent with presentation-type-of and structure objects.
Made the command-table-inherit-from slot of command tables setf-able, as per the Franz manual. Changed the default documentation of presentation translators from the presentation object to the name of the translator. If this is too controversial I will back it out. Force the tester of drag-and-drop translators to be definitive; otherwise serious weirdness ensues. Added the functional geometry explorer of Frank Buss and Rainer Joswig, who graciously agreed to it being included, as an application.
Fixed destination highlighting for drag-and-drop translators. Added documentation for dnd translators. Corrected the default value for modifier-state in find-innermost-applicable-presentation and friends. This isn't as big as it looks :)
drag-and-drop, not quite working yet
Move most protocol class definitions into protocol-classes.lisp, which is compiled and loaded early. Some class definitions, which had slot definitions that I didn't have the stomach to tease apart, stayed behind. Replace the presentation documentation state mechanism with updating-output so that other functions / programs can write to the pointer documentation area and not screw things up. We still use the state to actually print the documentation.
Changed DEFGENERIC* and DEFMETHOD* to use a private name for the generic function defined. This avoids warnings from some systems that don't like having a defsetf macro and a setf function for the same place. This is an invasive change; *RECOMPILE YOUR FILES*. Cleaned up some duplicate definitions in decls.lisp, transforms.lisp. Integrated Troels Henriksen's patch for :insert-default in ACCEPT.
fix behavior of :allow-sensitive-inferiors in with-output-as-presentation. It was disabling the current presentation as well as the inferiors.
In response to: http://article.gmane.org/gmane.lisp.mcclim.devel/724 We reSIGNAL the condition now before the call to ABORT, to give outer handlers a chance to say "I know how to handle this" (as Christophe Rhodes has put it).
Section 23.7.1 "Defining Presentation Translators" of the clim spec says in the subsection on DEFINE-PRESENTATION-ACTION: Note that the tester for presentation actions is always assumed to be definitive. This hasn't been the case until now for McCLIM. In addition to this the lambda-list of DEFINE-DRAG-AND-DROP-TRANSLATOR has been revised a bit. (Note that I couldn't find a sentence in the spec that specifies the default value for the parameter MENU, but the other three define-translator macros have all t as the default. Nevertheless, most of the parameters are ignored right now.)
This patch HANDLER-BINDs the ABORT-GESTURE condition to #'abort for the function ACCEPT in presentation-defs.lisp. ABORT-GESTURE is the condition that is signaled when any of the gestures in *ABORT-GESTURES* is read (in STREAM-READ-GESTURE). Right now *ABORT-GESTURES* contains only :abort on mcclim, which is a the keyboard gesture (#\c :control) (on Genera it contains #\Abort, the ABORT-key). I do not find explicitly in the clim specification that an ACCEPT should be aborted on an ABORT-GESTURE, but it seems to be the right thing (and I have to admit that I haven't been looking very hard). I did short tests with ACCEPTING-VALUES and it seems to behave correctly with this patch, i.e. the whole dialog will be aborted. But perhaps it would be nicer if, as long as a gadget of the dialog is selected, only the edit of that gadget were aborted.
One-line patch to presentation-single-box handling, from Dave Murray (27th July 2005, mcclim-devel)
Added some improvements to accept-from-string so that random accept methods and default processing are more likely to work with it. Added a null command and null-command presentation type so that the REPL doesn't print something obnoxious when the user enters an empty command. Some fixes to default processing.
Changed the handling of "empty input" for the purposes of returning a default value from ACCEPT. I eliminated the around method on STREAM-READ-CHAR that looked for activation/delimiter gestures and replaced it with an error handler on SIMPLE-PARSE-ERROR. The major effect of this is that (accept 'string) now return the empty string if the call to ACCEPT is not passed a default; other accept methods can return something useful for empty input too. This fixes some problems in the address book demo and with dialogs in general.
Fixed presentation highlighting to do the right thing in the :SINGLE-BOX NIL case. Fixed Goatee to not draw anything when drawing is not enabled for the stream. Changed input editing streams to never put activation gestures in the input buffer. There is only one place to receive an activation gesture: the end of the buffer. If the user types an activation gesture, the insertion pointer is moved to the end of the buffer. Fixed various problems with accepting-values. In particular, the insertion pointer does not need to be left at the end of a field when the user exits the dialog. Also, the behavior in the presence of errors new: if an error occurs while the user is typing in an accepting-values field, the bell is beeped and the insertion pointer is positioned before the stream position where the error occured.
In presentation method (present t t t textual-view), do the right thing with the :acceptably keyword argument i.e., arrange for Common Lisp to throw an error for unreadable stuff.
For CLOS objects, make presentation-type-of return the name of the class if possible
Implement :SINGLE-BOX properly.:SINGLE-BOX NIL is the default, but McCLIM has ignored it. This changes (for the better) the behavior of applications. Implement PRESENTATION-REFINED-POSITION-TEST. If the view argument to ACCEPT is a list, apply MAKE-INSTANCE to the list to obtain the view. Fix a bug in dialogs that prevented moving on to the next text field after hitting return. Define a new view type, TEXT-FIELD-VIEW, that is used in dialogs. This view has a WIDTH parameter.
Fix presentation system bug which produced incorrect results for presentation-type-of.
Applied delatin1ification patch from Christophe Rhodes.
Fix to last commit, remove leftover code left floating around.
Add a PRESENTATION-TYPE-OF method for STRUCTURE-OBJECTs.
Implemented :ALIGN-PROMPTS in ACCEPTING-VALUES. This was harder than it sounds, requiring several changes and cleanups: Moved the call to PROMPT-FOR-ACCEPT from ACCEPT to STREAM-ACCEPT. The spec vaguely hints that ACCEPT is responsible for drawing the prompt, but that makes things like wrapping the calls to PROMPT-FOR-ACCEPT and ACCEPT-PRESENT-DEFAULT inside a table formatting directive hard to do. This shouldn't affect any user code. Made Goatee input streams play nice with output recording. Added the notion of a NEWLINE-CHARACTER to Goatee buffers; NIL is valid, so one can construct Goatee areas that will only have one line. This eliminates a lot of ugliness from ACCEPTING-VALUES dialogs. Fixed a few Goatee bugs.
Changed STREAM-DESIGNATOR-SYMBOL to take a default value argument. The value corresponding to T isn't always *STANDARD-OUTPUT*. Fixed a problem in the incremental redisplay code checked in recently: the output record that holds an updating output record's children wasn't always created. Some tweaks (in progress) to ACCEPTING-VALUES.
Change invoke-with-new-output-record and invoke-with-output-to-output-record to take a constructor argument, as per the Franz CLIM user manual. This permits one to call make-instance with a constant class argument, which can be a big win in some implementations. Change with-new-output-record and friends to use this new form. This change requires a recompile of user code. Change stream-write-output to take a width argument. If the width of the string is already available (and it usually is), this saves an extra call to the expensive function stream-string-width.
dragging-output and drag-output-record. I rewrote the tracking-pointer implementation to follow a little protocol. Work is in progress on presentation drag-and-drop translators. The :incremental-redisplay option in a pane specification can be a list of arguments that will be passed to the call to redisplay. This change is described in the Franz user manual. Added some checks of :check-overlapping in the incremental redisplay code. Changed funcall-presentation-generic-function to call the private generic function directly, bypassing %funcall-presentation-generic-function. Added the :parent keyword to invoke-with-new-output-record. Optimized the table layout code a bit. Avoid traversing the whole table hierarchy: stop at the level of interest. Use arrays instead of lists in adjust-table-cells. Patch for SBCL package locks from Nikodemus Siivola (firstname.lastname@example.org). Listener SBCL fixes from Christophe Rhodes (email@example.com)
WITH-INPUT-CONTEXT: Only declare variables ignorable which are actually defined.
Changes to turn off, and then turn on again, presentation highlighting when redrawing a pane, with the aim of fixing various screwups that happen with tricky presentation highlighting that uses +flipping-ink+. As part of this I removed redisplay-changed-panes and rewrote the CLIM standard functions redisplay-frame-panes, redisplay-frame-pane, and pane-redisplay-needed. I did various refactoring among methods on panes, frames, and updating-output-mixin too. Moved a bunch of :initform forms to :default-initargs. Random (declare (ignore ...)) to shut up compiler warnings.
Changed the way defaults are handled by accept. I added a mixin class to standard-input-editing-stream, empty-input-mixin; an around method on stream-read-gesture; and some supporting macrology (handle-empty-input) to detect "empty" input and throw control to the appropriate place. Accept-1 now uses handle-empty-input to determine if it should return the default value. This means that the accept methods no longer need to do anything with their :default argument unless they use it for merging. I removed the :default and :default-type arguments from many accept methods all over McCLIM. Fixed a bad bug in the basic input editing loop (stream-read-gesture): rescanning-p should be set to nil when the scan-pointer reaches the fill pointer (not the insertion-pointer). Fixed a small bug in make-gf-specialized-ptype, a support function for com-show-generic-function.
2004-03-24 Timothy Moore <firstname.lastname@example.org> * INSTALL.OPENMCL: updated instructions. * builtin-commands.lisp (default-translator): Return the presentation type of the presentation as the second value. (document-form-translator): New function (%frob-constant-form, %frob-form): Use document-form-translator. Add translators from standard-object to expression and form. (expression-as-form): Add a menu entry for this translator. (ccl::%read-list-expression, (accept expression t textual-view), read, read-preserving-whitespace): Move the Lisp form reader stuff from the ptype 'form to the ptype 'expression. Disallow any activation or delimiter gestures while reading an expression. * commands.lisp (command-name-from-symbol): Don't strip leading subsequences of "COM-" from the command name. (keyword-arg-name-from-symbol): New function. (command-parsers): Add argument-unparser slot (make-keyword): New function (make-key-accessors): Use it. Accept keynames that begin with a #\: and have dashes replaced by spaces. (make-unprocessor-fun) New function to create an unprocessor function for each command. (%define-command): New macro preserving old behavior. Use new unprocessor stuff. (output-destination, invoke-with-standard-output): New class and generic function for outputing the results of commands to an output stream. (define-command): Implement :provide-output-destination-keyword (command-line-unparser): Call new stuff instead. * dialog.lisp: Add (redundant):provide-output-destination-keyword keyword argument to some commands. * incremental-redisplay.lisp: Work in progress. Turn things inside-out. * input-editing.lisp (complete-input): Don't insert input when mode is :complete and we've failed. * presentation-defs.lisp (accept-1): Use multiple-value-list when looking at results of accept method. ((present t completion t t)): Use the arguments to the type to drive the present method here. ((accept sequence t textual-view)): Don't peek-char initially! It breaks accepting the first element via mouse click. (accept sequence-enumerated t textual-view): new method. * recording.lisp : Cosmetic fixups. * regions.lisp (ellipse-normal-radii*): Add Gilbert's English translation of the comment and clean up the function. * system.lisp: Add Goatee/presentation-history. * transforms.lisp (+identity-transformation+): Move earlier in the file to avoid a warning. * utils.lisp (delete-1, parse-lambda-list): new functions. * Apps/Listener/dev-commands.lisp : Add :provide-output-destination-keyword argument to many commands. ((presentation-type generic-function)): Rewrite. Make it inherit from t, add accept method. The type of the object is generic-function, not the name or something. ((presentation-type standard-generic-function), (presentation-type method), (presentation-type standard-method)): add. (Show Generic Function): All-singing all-dancing command for exploring generic functions and their methods. ((presentation-type package)): New type with completing accept method. (Set Package): New command * Apps/Listener/listener.lisp (run-frame-top-level): Add bindings for all the Common Lisp reader and printer variables. * Apps/Scigraph/dwim/macros.lisp (define-command): Add :provide-output-destination-keyword support for McCLIM. * Goatee/goatee-command.lisp (lookup-gesture-command): Disable annoying debugging output. * Lisp-Dep/fix-openmcl.lisp (:clim-mop): In OpenMCL 0.14 use and export all symbols from :openmcl-mop. (compute-applicable-methods-using-classes): Hack for the listener.
In response to a bug showing up in SBCL I simplified the presentation type lattice and dispatch machinery. The supertype of all presentation types is now the built-in class T, not a presentation type class. Form and expression are no longer superclasses of all Lisp objects (I've defined presentation translators instead for that.) Around methods on compute-applicable-methods and friends remove methods specialized on standard-object for non CLOS types.
Presentation histories. The new goatee command C-M y works reasonably well in the listener demo. More testing and user documentation is needed. Work in progress on the OpenGL backend.
Implemented command-or-form presentation type. Fixed stupid-subtypep so OR presentation types can be used in with-input-context. Changed the subform reader stuff to use a presentation type option instead of the presentation type subform. Got rid of subform altogether. Changed the Lisp presentation types to be a subtype of expression, not form; added a presentation translator from expression to form that does necessary quoting. Fixed passing of arguments to the frame-top-level function. Moved the menu-item stuff in read-frame-command into an :around method so that read-frame-command can be usefully overridden by users. Cleaned up the listener demo: got rid of the top level loop parts that are now redundant. Added a frame slot and an argument to run-listener/run-listener-process to control whether or not to use CLIM command-or-form processing (the default is the existing method.)
Plausable implementation of presentation-single-box Some work-in-progress on window streams "Fix" the Macintosh issue where the Delete key doesn't work Make some changes suggested by Strandh to flexivector and refactor it so flexivectors with general contents can be easily derived. Add note about CMUCL and mp::*idle-process* Add note about run-test
A small cleanup: don't use the "secret" names of presentations in return-from forms. Some additional Listener support for openmcl-0.14.
Remove compile-time dependency on CLOS class metaclasses.
Change handling of activation gestures and their effect on the input editing stream. A stream now becomes activated when stream-read-gesture sees the gesture (not stream-process-gesture), and a stream is "deactivated" if the activation gesture is unread. In (method accept form ...) suppress all activation gestures while read-preserving-whitespace is processing input. This enables multi-line input of forms. Add (method accept pathname ...) so you don't have to type quotes around pathnames in the listener demo.
Add support for (accept 'form) to read and read-preserving-whitespace. Don't let presentation-replace-input do anything when rescanning.
Support (in OpenMCL) for accepting the subforms of a form, as opposed to blowing away the entire form in progress. Put the transform for coord-seqs in the recording methods, not the def-grecording macro. Fake MOP functions for OpenMCL in order to support the listener application.
Accepting-values. It's ugly and has some cursor glitches but otherwise appears to work. Various changes to Goatee were made to support accepting-values. Also, Goatee screen lines are now better-behaved output records.
make all of the package names passed to in-package be lowercase keywords for ACL's java mode
Hack around lack of string stream class in CMUCL/SBCL
3 sets of additions/changes/fixes: presentation-replace-input Bugs I fixed while at ILC, including implementing accept-from-string. Fixes made in the course of getting cl-reversi to work (it mostly does modulo display timing issues). This includes a revamping of command tables, menus and keystrokes.
Do not declare used variables to be IGNOREd.
Fixed bug reported by Paul Werkowski; coordinate sequences can now be lists or vectors. Introduced a do-sequence macro that has similar semantics to dotimes and dolist as well as features of map-sequence. Implemented frame-state (except for :shrunk). Changed timing of when frames are generated, adopted and enabled to follow the spec. Fixed clim-fig to adapt to this new world order. Disable the frame when the top level function exits. Remove erroring methods for copy-to-pixmap (stream ...) and friends. Wrote a with-keywords-removed macro that attempts to be efficient about about removing arguments from argument lists.
John Wiseman's (aka lemonodor) contributions for McCLIM with OpenMCL on Mac OS X.
Uncommented menu-choose.lisp from the system definition. I'm using it so it's not experimental, damn it :) Possibilities gestures for command completion. C-/ and right mouse bring up possibilities menus. Make user-command-table inherit from global-command-table. Implement keyword arguments in commands. Implement the "read" part of the pointer protocol. Added accept method for sequence presentation type. Change handling of *null-presentation*. This isn't traversed in find-applicable-translators / map-applicable-translators anymore; it's handeld in find-innermost-presentation-match. Gave a raised appearance to menus drawn with menu-choose and friends. Someone who knows what they're doing should look over what I did. Steps towards implementing line wrap in Goatee. Fixed bug in insert-obj-before pointed out by someone on IRC.
don't set :acceptably to T
Handle key events for modifier keys in order to keep track of modifier state. Implement keyboard-event-character. Store coordinates of pointer in key events. Don't set the sheet of key events to the sheet with focus. The wait test and input handler functions now respond to key events. The frame pointer documentation functions react if the modifier state has changed. Make a little protocol out of the pointer documentation update operation. Fix typo: too many n's in find-innnermost-presentation-context.
Make the pointer documentation window more pretty. Add a describe-presentation command in order to have some command bound to the super modifier. Move coordinates into the device-event class. Supply coordinates for key events. Add make-load-form methods for named-color and standard-text-style. This, plus some strategic eval-when (:compile-toplevel ...), allows us to remove the defparameter/defconstant hack for CMUCL (and SBCL too, though I haven't tested that and didn't do the work). Mention possible problem with CLOCC and pcl::*defclass-times* et al. in instructions.
* INPUT-CONTEXT-WAIT-TEST: Removed bogus IGNORE declaration. * WITH-INPUT-CONTEXT: Added IGNORABLE declaration.
Editable text fields. Support for the OR presentation type. Added :mcclim to *features*. This was done in support of Jochen Schmidt's weird-irc IRC client, which now works reasonably well under McCLIM, though it isn't as pretty as some of the screenshots at http://www.dataheaven.de/weird-irc/.
Changed implementation of low-level streams code once again. This does away with the fill-vector stream buffer and uses the event queue directly. Sorry mikemac, I should have listened to you :) If this change isn't controversial I'll write something in the manual about this deviation from the spec. By default all panes in a frame now share the same event queue. I believe this mimics the behaviour of real CLIM. Could people who aren't doing multiprocessing -- e.g. SBCL users -- give this a try? It should fix the existing streams/presentation breakage.
class-name and compute-applicable-methods are in the common-lisp package and aren't in clim-mop anymore. Use safe-cpl, which forces class inheritance to be finalized, instead of clim-mop:class-precedence-list. This fixes problems seen in ACL.
Fixes to the presentation type system, including some MOP hacking, to bring the presentation type lattice in line with the Spec. In particular, form and expression are supertypes of all Lisp types, including implicit CLOS types. Presentation method dispatch, presentation-subtypep, map-over-presentation-type-supertypes, etc. all implement this lattice. I think we're doing a better job than real CLIM in this respect. Broke out presentation type and method definitions into presentation-defs.lisp so that less stuff needs to be wrapped in eval-when.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|