[mcclim-devel] A few questions

Robert Strandh strandh at labri.fr
Wed Nov 4 21:58:17 UTC 2009


I alread answered these questions on #lisp, but here goes for
documentation purposes. 

 > * I've started 'theming' McCLIM to give it a more modern look (a  
 > darker look).. I've started with /Looks/pixie.lisp and went from  
 > there. Is pixie.lisp an example of 'correct' skinning process -  
 > effectively creating new classes with overridden methods for various  
 > things or is it better to just redefine the handle-redraw methods of  
 > original gadgets and be done with it? Pixie has a problem for  
 > instance - mouse wheel scrolling doesn't work, because it  
 > reimplements scrolling logic implemented in gadgets.lisp or somewhere  
 > else. Wouldn't it be more correct to use the 'default' logic and only  
 > redefine handle-repaint methods, if change in functionality isn't  
 > needed?

I haven't looked at pixie, but the way I would do this would be to
make handle-repaint call something like theme-handle-repaint with an
additional argument of type `skin' or `look' or `theme' or whatever. 

Inheriting from existing gadgets and overriding methods doesn't seem
like the right approach.  I might be wrong of course. 

 > * what is the correct way to add my own widgets? I assume I should  
 > look at gadgets.lisp and start from there. 

I think that's correct, yes. 

 > Are new widgets welcome in  
 > the main McCLIM source tree or is McCLIM closely following some CLIM  
 > specification and doesn't want to go beyond that?

Personally, I am in favor of more gadgets.  They won't end up in the
CLIM package, but that's no problem.  CLIM was meant to be extended
this way.  If you make it a separate system (in the ASDF sense) then
people can include it if they want. 

 > * I'm using CLX backend and default/freetype/truetype font  
 > renedering. I've noticed that with default X11 font rendering, the  
 > usual textstyle (sans-serif, roman) is much more readable at  
 > size :small, than :normal. For antialiased fonts, :normal works  
 > great. Perhaps the default fontsize should be :small (or mcclim's clx  
 > default font render should just interpret :normal as :small) - clim- 
 > examples applications would look nicer out of the box and I wouldn't  
 > need to write cases in my app (if ''freetype'' :normal :small) to  
 > make stuff look nice. I think this has been mentioned before..

I have no right answer for you.  Perhaps one day we can have a
rendering system that would be anti-aliased and look good at low
resolutions.  Currently that is not the case. 

 > * right now McCLIMs 'textfield' is vastly different from text fields  
 > in other toolkits. I think we could conform better if the caret was  
 > just a line (not a block), if the caret blinked properly, if there  
 > was caret positioning via mouse click and if there was selection  
 > possible. I don't know how other McCLIM users feel about this - but  
 > if I added these features, would they be added to McCLIM? Would it be  
 > better to add a new 'gadget' for this 'modern' text field stuff?

I would commit those features as changes to the existing text field
unless someone can give me good reasons not to. 

Regards,
-- 
Robert Strandh

---------------------------------------------------------------------
Greenspun's Tenth Rule of Programming: any sufficiently complicated C
or Fortran program contains an ad hoc informally-specified bug-ridden
slow implementation of half of Common Lisp.
---------------------------------------------------------------------




More information about the mcclim-devel mailing list