Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
I like my scroll bars left, Hefner wants them right. So I made it tweakable. Default is right though. CLIM-EXTENSIONS:*DEFAULT-VERTICAL-SCROLL-BAR-POSITION* New variable^Wparameter intented to be settable by the user. VERTICAL-SCROLL-BAR-POSITION slot of SCROLLER-PANE :VERTICAL-SCROLL-BAR-POSITION init arg of SCROLLER-PANE New. (ALLOCATE-SPACE SCROLLER-PANE T T) Use it. Do not use *SCROLLBAR-THICKNESS*, but rely on the space requirements of the scroll bars.
Use force-output instead of finish-output as the latter implies waiting for an answer from the display server, which is something we really do not want to do.
Move the cut/paste and mouse scroll mixins from clim-stream-pane into subclasses, so that it's possible to implement subclasses of clim-stream-pane without them (presumably, if you want the extra features beyond the spec, you'll inherit from application-pane anyway). Move the mixin names into clim-extensions to make them accessible to the user.
Wrap up the last dead-key stuff for Drei gadgets.
Converted MCCLIM-IMAGES to CLIM 2.2 bitmap functions (with extensions). Includes new demo application.
Export OUTPUT-RECORD-BASELINE from CLIM-EXTENSIONS. Use OUTPUT-RECORD-BASELINE to make Drei more inteligent.
No need to modify the autogenerated symbol list. Moved CLIM 2.2 symbols.
Added some amazing hacks to pointer-documentation-panes for the notion of a "background message". This is the beginning of extending pointer-documentation-panes into more generally useful minibuffer-like panes. For now, this just means that the Listener shows arglists and other things for Drei commands. It's still a little flickery, though.
Added stub classes and constants for gadget views. Programs using these will at least compile now, though they may not work. Hopefully, this batch of stub views will be like a sad puppy in the corner, sooner or later guilting someone into finishing the implementation.
Change the use of global variables in Drei to functions that query a single global variable (*drei-instance*). At the same time, change a few things in ESA to make Dreis use of it less hacky.
New click-to-focus policy for text-editor gadgets and panes, implemented for the CLX, Null and gtkairo backends (but gtk_window_get_focus() hand-inserted into gtkairo/ffi.lisp). PORT-KEYBOARD-INPUT-FOCUS is now a trampoline to PORT-FRAME-KEYBOARD-INPUT-FOCUS, a per-port function to set the keyboard focus for a particular frame. Not implemented for Beagle or OpenGL backends. Now Drei / Goatee gadgets don't have to do their own keyboard focus handling on arm/disarm any more. Various kludges sprinkled all over the place to make this so.
Mostly rewrote bordered output. Introduced new border types :rounded and :ellipse, and introduced various new keywords (:filled, :background, :outline-ink, :shadow, :shadow-offset, :line-*, :padding-*, etc, to be documented). Introduced generic functions make-bordered-output-record, draw-output-border-under, draw-output-border-over to provide a CLOS-style underpinning for the define-border-type macro. This also means you can implement anonymous border styles via any object having applicable methods for these functions. Filled borders should respond to presentation highlighting if a :highlight keyword provides an alternate background ink to use while highlighted. Export aforementioned new border functions, draw-rounded-rectangle*, the bordered-output-record class, and the highlight-output-record-tree function via clim-externals.
Added the tab layout. * Extensions/tab-layout.lisp: New file. * Examples/tabdemo.lisp: New file. * mcclim.asd (CLIM): Added Extensions/tab-layout.lisp. (CLIM-EXAMPLES): Add tabdemo.lisp * package.lisp (CLIM-TAB-LAYOUT): New package. * Examples/demodemo.lisp: Added a button for the tabdemo. * Doc/make-docstrings.lisp: Process the clim-tab-layout package. * Doc/mcclim.texi: New chapter about the tab-layout. * Backends/CLX/frame-manager.lisp (GENERATE-STANDARD-PANE-SPECS, FIND-CONCRETE-PANE-CLASS): Obey define-abstract-pane-mapping even for names not the internal packages. * Backends/gtkairo/event.lisp (TAB-BUTTON-HANDLER): New. * Backends/gtkairo/frame-manager.lisp ((MAKE-PANE-2 TAB-LAYOUT-PANE)): New. (RESOLVE-ABSTRACT-PANE-NAME): Renamed. * Backends/gtkairo/gadgets.lisp (TAB-BUTTON-EVENT, TAB-PRESS-EVENT, TAB-RELEASE-EVENT, GTK-TAB-LAYOUT): New classes. (REALIZE-NATIVE-WIDGET, CONTAINER-PUT, (SETF CLIM-TAB-LAYOUT:TAB-LAYOUT-PAGES), REORDER-NOTEBOOK-PAGES, CONTAINER-MOVE, ALLOCATE-SPACE, (SETF CLIM-TAB-LAYOUT:TAB-LAYOUT-ENABLED-PAGE), CONNECT-NATIVE-SIGNALS, CLIM-TAB-LAYOUT:NOTE-TAB-PAGE-CHANGED, SET-TAB-PAGE-ATTRIBUTES, HANDLE-EVENT): New functions and methods on gtk-tab-layout. (PARENT-AD-HOC-PRESENTATION): New class. * Backends/gtkairo/port.lisp (GTK-WIDGET-MODIFY-FG): New function. * Backends/gtkairo/ffi.lisp: Regenerated.
Enable support for extended text styles using strings for family and face, as already implemented in CLIM-CLX. Teach Gtkairo do the same. Add an API for font listing (implemented in CLX and Gtkairo, plus a trivial fallback implementation for other backends) and a font selection dialog as an example. * Doc/mcclim.texi: New chapter "Fonts and Extended Text Styles" * Examples/font-selector.lisp: New file. * Examples/demodemo.lisp: Added a button for the font selector. * mcclim.asd (CLIM-EXAMPLES): Added font-selector.lisp. * package.lisp (CLIM-EXTENSIONS): Export new symbols font-family font-face port-all-font-families font-family-name font-family-port font-family-all-faces font-face-name font-face-family font-face-all-sizes font-face-scalable-p font-face-text-style. * medium.lisp (MAKE-TEXT-STYLE, TEXT-STYLE-EQUALP): Allow strings for family and face. (MAKE-TEXT-STYLE-1): New helper function. * ports.lisp (FONT-FAMILY, FONT-FACE): New classes. (port-all-font-families font-family-name font-family-port font-family-all-faces font-face-name font-face-family font-face-all-sizes font-face-scalable-p font-face-text-style): New generic functions and default methods. * Backends/CLX/port.lisp (FONT-FAMILIES): New slot in the port. (CLX-FONT-FAMILY, CLX-FONT-FACE): New classes. (port-all-font-families font-family-name font-family-port font-family-all-faces font-face-name font-face-family font-face-all-sizes font-face-scalable-p font-face-text-style): New methods. (SPLIT-FONT-NAME, RELOAD-FONT-TABLE, MAKE-UNFRIEDLY-NAME): New helper functions. * Backends/gtkairo/pango.lisp (MAKE-FONT-DESCRIPTION): Support strings for family and face. (PANGO-FONT-FAMILY, PANGO-FONT-FACE): New classes. (port-all-font-families font-family-name font-family-port font-family-all-faces font-face-name font-face-family font-face-all-sizes font-face-scalable-p font-face-text-style): New methods. (INVOKE-LISTER, pango-font-family-list-faces, pango-font-face-list-sizes): New helper functions. * Backends/gtkairo/port.lisp (GLOBAL-PANGO-CONTEXT): New slot in the port. ((INITIALIZE-INSTANCE GTKAIRO-PORT)): Set the pango context. * Backends/gtkairo/ffi.lisp: regenerated.
Implement (SETF LIST-PANE-ITEMS) as discussed on IRC. * package.lisp (CLIM-EXTENSIONS): Export LIST-PANE-ITEMS. * Examples/demodemo.lisp: Extend the LIST-TEST to demonstrate the new functionality. * gadgets.lisp ((SETF LIST-PANE-ITEMS)): Add a new generic function. Implement it for GENERIC-LIST-PANE, with some general code specialized on META-LIST-PANE. * Backends/gtkairo/gadgets.lisp: Implement (SETF LIST-PANE-ITEMS) for GTK-LIST, too. * Backends/gtkairo/ffi.lisp: regenerated.
Implemented `pointer-place-rubber-band-line*', `pointer-input-rectangle*' and `pointer-input-rectangle' (CLIM 2.2).
Made `stream-set-cursor-position' a generic function and exported it, as seen in CLIM 2.2.
Fix compilation for post-1.0 openmcl ... :mcl is no longer on *features*
Fix up scroll bars in Beagle. Use the high level gadget events to signal scroll bar changes to the application. Document the unintuitive scroll-bar-thumb-size slot in the scroll-bar gadget.
Patches from dtc for Scieneer Common Lisp, and a few other fixes too.
Implemented destroy-frame and map-over-frames. Implemented find-application-frame from the Franz User Manual. CLIM Launcher folks might want to take a look at it.
Add wheel left/right constants. TODO: Support left/right scrolling of panes (I don't have an appropriate input device to test this, so I leave it for someone else).
FORMAT-GRAPH-FROM-ROOT was not exported from CLIM package.
I think this is a slightly more ICCCMly correct implementation of sending selections to requestors. We support all the required targets except MULTIPLE, select an appropriate property if TEXT is requested, refuse to send bad characters to a STRING target, and avoid printing to *trace-output* to deal with the fact that Klipper, at least, polls the TIMESTAMP property to find out if the selection has changed. Requesting PRIMARY from selection owners is moderately broken, unfortunately; it works for ASCII but not for much else.
Fix mixed up arguments to set-port-keyboard-focus. Renamed set-port-keyboard-focus to %set-port-keyboard-focus to avoid confusion with the CLIM 2.0 function port-keyboard-input-focus. Added a timestamp keyword to %set-port-keyboard-focus (not used by any callers yet). Added some comments about how the keyboard focus functions are connected.
Rewrote WITH-DOUBLE-BUFFERING. This version takes a rectangle as an argument, allocates a pixmap for that region of the screen, and sets up the sheet transformations so that drawing is done in the correct pixmap coordinates. Use WITH-DOUBLE-BUFFERING in DRAG-OUTPUT-RECORD. Add a little example of using dragging-output. Change the definition of ROUND-COORDINATE in the CLX backend to round down from .5, not up. This should follow the CLIM pixel coverage definition for shapes more closely. Replace most uses of ROUND in the CLX backend with ROUND-COORDINATE. Allow inconsistent :ID-TEST arguments in UPDATING-OUTPUT.
Add CLISP support. It now has a GRAY package.
Merging text selection functionality, implemented by Gilbert Baumann. Text selection functions are provided by cut-and-paste-mixin, tentatively added to clim-stream-pane. Possibly we want to move it further down the class hierarchy, so users can define stream panes without interference from the selection code. Interaction implemented: Shift-Mouse-L down: clear active selection and set the first point Shift-Mouse-L drag: drag the second point Shift-Mouse-L up: set the second point Shift-Mouse-R down: pick the nearest point, if any Shift-Mouse-R drag: drag said point Shift-Mouse-R up: leave said point where it was dragged to. Shift-Mouse-M: paste
Really break your own DESCRIBE.
Define our DESCRIBE via the CLIM-LISP package, rather than replacing the implementation version of it.
Support for UPDATING-OUTPUT where the display records are moved around during the course of redisplay. In particular, UPDATING-OUTPUT now works inside of tables. Get stream-clear-output from host CL.
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.
Scroll wheel support. Added new defconstants for +pointer-wheel-up/down+, and changed CLX backend to produce them. Handle scrolling using a DISPATCH-EVENT method specialized on mouse-wheel-scroll-mixin, and tentatively mixed this into clim-stream-pane.
Prompt for arguments in menu commands. Work in progress on the OpenGL backend. Merged Dan Barlow's SBCL condition variable changes for event queues and provide a reasonable implementation of condition variables for the implementations. This means no more busy-waiting. I've tested the OpenMCL version and will test the CMUCL implementation shortly; I haven't tested ACL or no multiprocessing. I've looked at LispWorks but don't know yet how to support condition variables there.
First steps at defining the interface to backends. Created a :clim-backends package exports the symbols (currently generic functions) that a backend should define. Reduced the number of symbols that clim-clx imports from clim-internals.
Work in progress on the OpenGL backend, but nothing's working yet. Refactored the KeySym and modifiers code in the CLX backend so that it can be used by the OpenGL backend too. Fixed a typo in presentation-replace-input; it was always creating accept result extents. Added support in accepting-values for placing the default in the text entry field and fixed several problems that turned up as a result. The completion functions take sequences, not just lists. Also, :allow-any-input was broken.
Implemented SHEET-POINTER-CURSOR from Franz CLIM.
More scigraph hacking
Added a new gadget, clim-extensions:box-adjuster-gadget. You can put this within a vertical/horizontal box or rack, and it will adjust the size of the neighboring clients in the box. The implementation is not perfect, but it works pretty well, considering I've made no changes to the box widgets to accomodate it.
use keywords and uninterned symbols for ACL\'s java mode
make all #+/#- conditionals lowercase for ACLs java mode
Put SCROLLER-PANE, SCROLLING, SPACING, SPACING-PANE back into the export list of the CLIM package. Removed them from the export list of CLIM-EXT to cause no package conflicts.
Added and enabled pointer motion hints for stream panes. This seems to make performance snappier on "slow" systems like my iBook + openmcl + XDarwin setup. Added a sheet-motion-hints interface to sheets so that motion hints can be selectively disabled. I added support to tracking-pointer to turn motion hints off; I'm not sure if that's the right thing or not.
Added lowering to complement raising. Fixed raising and lowering to draw their backgrounds. Fixed viewport to allocate-space for its child - maybe needs fixing somewhere else.
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.
* Export CLIM:MENU-ITEM.
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/.
Computation of size of standard polygon output records takes into account MEDIUM-MITER-LIMIT.
* (DEFPACKAGE "CLIP-LISP"): Put together all symbols, which are to be imported from the same package.
Many bug fixes in Goatee. Rewrote buffer functions in terms of a "buffer protocol" that will all subclasses to easily track changes to a buffer. Added Goatee conditions, which are handled by execute-gesture-command and produce a satisfying beep. Added Goatee implementation of input editing streams. Adapted standard-input-editing-stream to use Goatee for input editing. Made necessary changes to system file and package definitions. We have input editing! Check it out in the presentation-test demo (run-test 'summation). There is one known glitch: the edited text isn't aligned properly with other text written to the stream. I'll be looking into that shortly.
- There is now an IMAGE package which contains PBM read/write functions and images abstract types. I'm not really sur of my package implementation, please check it (the def-package is in image.lisp). - Bug fixes for draw-image and medium-draw-image* which are now in the clim-extensions.lisp file
Remove reference to sb-pcl in sheet-adopt-child. Add the medium- accessors for sheets. Get Goatee to compile.
Sundry fixes to run without multiprocessing support. Added images/ to hold bitmaps for tests. Added looks/ to hold neutral look-and-feel realizer packages. Added Examples/gadget-test to test many gadgets with a look and feel. Added a pixie look and feel, and a pixie/clx to work with the clx backend. Added drawing support in the CLX backend for ovals and circles. Fixed pixmaps to work with with-output-to-pixmap with draw-image, etc. Moved sheet-leaf-mixin to standard-gadget-pane so it doesn't break radio-box-pane, etc. Misc fixes.
Make a global choice, based on multiprocessing or not, whether events should be handled immediately or queued up to be serviced by another process. The choice is implemented by the classes clim-sheet-input-mixin and clim-repainting-mixin, from which all panes inherit. These classes' superclasses are conditionalized on whether or not the implementation is capable of multiprocessing. When multiprocessing there is a single event queue per frame. This is implemented by queue-event on pane classes. The event loop is implemented in stream-input-wait. In single processing mode, stream-input-wait calls process-next-event and handles events immediately. When multiprocessing, stream-input-wait reads events from the frame event queue and handles them. The function clim-extensions:simple-event-loop is supplied for applications which do not loop reading from a stream; various examples have been changed to use it. In stream-read-gesture/stream-input-wait the input-wait-test function is not expected to block anymore; nor is the input-wait-handler expected to dispatch events. input-wait-handler is responsible for consuming events that should not be seen by anyone else. input-context-wait-test and highlight-applicable-presentation have been rewritten to reflect this. The adjustable-array buffer for extended-input-streams has been added back in. A typo in %event-matches-gesture has been fixed. Default methods for map-over-output-records-containing-position and map-over-output-records-overlapping-region have been added. The cursor implementation has been broken out into a cursor-mixin so I can snarf it for Goatee :)
Reworked list of CLIM symbols just another time. This time I used a quick and dirty tool to extract symbols from the TeX files directly. Quite a bunch of symbols were missing from the export list.
Committed initial code for Goatee emacs-alike editor. This is all completely broken at the moment. Added conditions for errors encountered during accept (spuriously referred to as errors in present in the spec). Added some new accept presentation methods. Changed parse-display-variable to default to not transform an empty host to "localhost" so we get a Unix domain connection instead of a TCP socket.
FUNDAMENTAL-BINARY-OUTPUT-STREAM was omited from CLIM-LISP, fixed that.
Careful re-commit of what I did on 2001-08-12. Namely - Spend CLIM-LISP package - Provided CLIM-LISP-PATCH for patching your CL - Fixed the package structure to match section 2.2 . CLIM symbols have the CLIM package as home package. . CLIMI then uses CLIM, CLIM-LISP etc. - Fix of WITH-SPECIAL-CHOICES . Early enough definition of macro . Macro calls gf INVOKE-WITH-SPECIAL-CHOICES available for specialization - Added file decls.lisp for random beforehand declarations. - Added CMU-specific fixes in fix-cmu.lisp; . DEFCONSTANT is now DEFPARAMETER (we had this kludge already) . DEFCLASS is now wraped into (EVAL-WHEN (COMPILE EVAL LOAD) #), which helps the compiler a bit and saves a warning here and there.
Updated the list of exported symbols to match the new CLIM II Spec. There is approximatively 100 new symbols; certain functions have changed their name to be more coherent, and a few others have been removed. I also took advantage of that opportunity to remove the duplicate symbols.
Added the following functions: - space-requirement+ - space-requirement+* - space-requirement-combine - space-requirement-components These functions have been added in the new Spec version. They can be useful to simplify code.
* CLIM package: Moved (:use :clim-extensions) to the point after the definition of this package * CLIM-USER: New package
The spec is very specific on what can be exported from the CLIM package. CLIM cannot include the CLIM-EXTENSIONS. CLIM-EXTENSIONS has to include CLIM. When apps use :CLIM, they should get the plain standard CLIM. If the app wants the extensions, it'll have to use :CLIM-EXTENSIONS, as the CLIM-DEMO package does.
Implemented a simple PostScript medium. Currently, the PostScript code is generated `on the fly' by each medium-draw-* function. A better way to implement this would probably be to record the output in an output-record, then compute the bounding box and finally generate the PostScript by replaying the output-record.
Added a draw-triangle* drawing function. This function is not documented in the spec, but is quite common, though.
Added the use of the package clim-extensions to the package clim.
Patch for SBCL incorporated
Added exportation of image relatives functions of the clim-extensions package
Added CLIM-SYS package. --GB
Added with-translation to the list of exported symbols.
pixmaps are now available. Add a new extensions : draw-glyph (see graphics.lisp). Did the make device-font-text-style.
rearrange the systems and packages as per Paul Werkowski
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|