all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* SVG support(again) ?
@ 2007-08-08 23:56 joakim
  2007-08-09 21:17 ` joakim
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-08 23:56 UTC (permalink / raw)
  To: emacs-devel

There was a patch for SVG support in Emacs in 2004.
This patch seems to no longer apply.

Has anyone adopted it for the current tree? If so, coculd it be
applied?

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-08 23:56 SVG support(again) ? joakim
@ 2007-08-09 21:17 ` joakim
  2007-08-09 21:36   ` David Kastrup
  2007-08-11  5:05   ` Richard Stallman
  0 siblings, 2 replies; 106+ messages in thread
From: joakim @ 2007-08-09 21:17 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 915 bytes --]

joakim@verona.se writes:

> There was a patch for SVG support in Emacs in 2004.
> This patch seems to no longer apply.

I've adapted the SVG patch by Paul Pogonyshev for current emacs CVS.
All I did was find the right place to insert the hunks, since the
emacs source has changed a lot since the original patch.

I tried it briefly on a Fedora 7 box. It seems to work nicely.

What must be done in order for this patch to be applied?

The only odd thing I can see is three lines like:

#if 1 || defined (HAVE_RSVG)

that ought to be the same as:

#if defined (HAVE_RSVG)

which should be ok on any plattform, since HAVE_RSVG will be defined
only if you have librsvg2. I did try the configure script generated by
autoconf once withouth the lib and once with.

I tried making a SVG picture with Inkscape, viewing it in emacs using
image-dired, and then editing it a bit with nxml mode, and it seemed
to work nicely.


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: emacs_svg.patch --]
[-- Type: text/x-patch, Size: 10760 bytes --]

? emacs_svg.patch
Index: configure.in
===================================================================
RCS file: /sources/emacs/emacs/configure.in,v
retrieving revision 1.459
diff -r1.459 configure.in
112a113,114
> AC_ARG_WITH(rsvg,
> [  --with-rsvg             use -lrsvg-2 for displaying SVG images])
116c118
< [  --with-pkg-config-prog  Path to pkg-config to use for finding GTK])
---
> [  --with-pkg-config-prog  Path to pkg-config to use for finding GTK and librsvg])
2124a2127,2152
> ### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
> HAVE_RSVG=no
> if test "${HAVE_X11}" = "yes"; then
>   if test "${with_rsvg}" != "no"; then
>     dnl Check if `--with-pkg-config-prog' has been given.
>     if test "X${with_pkg_config_prog}" != X; then
>       PKG_CONFIG="${with_pkg_config_prog}"
>     fi
> 
>     RSVG_REQUIRED=2.0.0
>     RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
> 
>     PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
>     AC_SUBST(RSVG_CFLAGS)
>     AC_SUBST(RSVG_LIBS)
> 
>     if test ".${RSVG_CFLAGS}" != "."; then
>       HAVE_RSVG=yes
>       AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
>       CFLAGS="$CFLAGS $RSVG_CFLAGS"
>       LIBS="$RSVG_LIBS $LIBS"
>     fi
>   fi
> fi
> 
> 
3364a3393
> echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
Index: lisp/image-file.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/image-file.el,v
retrieving revision 1.29
diff -r1.29 image-file.el
42c42
<   '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")
---
>   '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")
Index: lisp/image.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/image.el,v
retrieving revision 1.72
diff -r1.72 image.el
46c46,47
<     ("\\`\xff\xd8" . (image-jpeg-p . jpeg)))
---
>     ("\\`\xff\xd8" . (image-jpeg-p . jpeg))
>     ("\\`<\\?xml " . svg))
Index: src/Makefile.in
===================================================================
RCS file: /sources/emacs/emacs/src/Makefile.in,v
retrieving revision 1.346
diff -r1.346 Makefile.in
284c284
< ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS}
---
> ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE @RSVG_CFLAGS@ C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS}
453c453
< LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS)
---
> LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM @RSVG_LIBS@ LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS)
Index: src/image.c
===================================================================
RCS file: /sources/emacs/emacs/src/image.c,v
retrieving revision 1.77
diff -r1.77 image.c
8201a8202,8474
>  
> /***********************************************************************
> 				 SVG
>  ***********************************************************************/
> 
> #if 1 || defined (HAVE_RSVG)
> 
> /* Function prototypes.  */
> 
> static int svg_image_p P_ ((Lisp_Object object));
> static int svg_load P_ ((struct frame *f, struct image *img));
> 
> static int svg_load_image P_ ((struct frame *, struct image *,
> 			       unsigned char *, unsigned int));
> 
> /* The symbol `svg' identifying images of this type. */
> 
> Lisp_Object Qsvg;
> 
> /* Indices of image specification fields in svg_format, below.  */
> 
> enum svg_keyword_index
> {
>   SVG_TYPE,
>   SVG_DATA,
>   SVG_FILE,
>   SVG_ASCENT,
>   SVG_MARGIN,
>   SVG_RELIEF,
>   SVG_ALGORITHM,
>   SVG_HEURISTIC_MASK,
>   SVG_MASK,
>   SVG_BACKGROUND,
>   SVG_LAST
> };
> 
> /* Vector of image_keyword structures describing the format
>    of valid user-defined image specifications.  */
> 
> static struct image_keyword svg_format[SVG_LAST] =
> {
>   {":type",		IMAGE_SYMBOL_VALUE,			1},
>   {":data",		IMAGE_STRING_VALUE,			0},
>   {":file",		IMAGE_STRING_VALUE,			0},
>   {":ascent",		IMAGE_ASCENT_VALUE,			0},
>   {":margin",		IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,	0},
>   {":relief",		IMAGE_INTEGER_VALUE,			0},
>   {":conversion",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
>   {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
>   {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
>   {":background",	IMAGE_STRING_OR_NIL_VALUE,		0}
> };
> 
> /* Structure describing the image type `svg'.  */
> 
> static struct image_type svg_type =
> {
>   &Qsvg,
>   svg_image_p,
>   svg_load,
>   x_clear_image,
>   NULL
> };
> 
> 
> /* Return non-zero if OBJECT is a valid SVG image specification.  */
> 
> static int
> svg_image_p (object)
>      Lisp_Object object;
> {
>   struct image_keyword fmt[SVG_LAST];
>   bcopy (svg_format, fmt, sizeof fmt);
> 
>   if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
>     return 0;
> 
>   /* Must specify either the :data or :file keyword.  */
>   return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
> }
> 
> #include <librsvg/rsvg.h>
> 
> /* DEF_IMGLIB_FN() here? */
> 
> #define fn_rsvg_handle_new		rsvg_handle_new
> #define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
> #define fn_rsvg_handle_write		rsvg_handle_write
> #define fn_rsvg_handle_close		rsvg_handle_close
> #define fn_rsvg_handle_get_pixbuf	rsvg_handle_get_pixbuf
> #define fn_rsvg_handle_free		rsvg_handle_free
> 
> #define fn_gdk_pixbuf_get_width		gdk_pixbuf_get_width
> #define fn_gdk_pixbuf_get_height	gdk_pixbuf_get_height
> #define fn_gdk_pixbuf_get_pixels	gdk_pixbuf_get_pixels
> #define fn_gdk_pixbuf_get_rowstride	gdk_pixbuf_get_rowstride
> #define fn_gdk_pixbuf_get_colorspace	gdk_pixbuf_get_colorspace
> #define fn_gdk_pixbuf_get_n_channels	gdk_pixbuf_get_n_channels
> #define fn_gdk_pixbuf_get_has_alpha	gdk_pixbuf_get_has_alpha
> #define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
> 
> 
> /* Load SVG image IMG for use on frame F.  Value is non-zero if
>    successful.  */
> 
> static int
> svg_load (f, img)
>      struct frame *f;
>      struct image *img;
> {
>   int success_p = 0;
>   Lisp_Object file_name;
> 
>   /* If IMG->spec specifies a file name, create a non-file spec from it.  */
>   file_name = image_spec_value (img->spec, QCfile, NULL);
>   if (STRINGP (file_name))
>     {
>       Lisp_Object file;
>       unsigned char *contents;
>       int size;
>       struct gcpro gcpro1;
> 
>       file = x_find_image_file (file_name);
>       GCPRO1 (file);
>       if (!STRINGP (file))
>       {
>         image_error ("Cannot find image file `%s'", file_name, Qnil);
>         UNGCPRO;
>         return 0;
>       }
> 
>       contents = slurp_file (SDATA (file), &size);
>       if (contents == NULL)
>       {
>         image_error ("Error loading SVG image `%s'", img->spec, Qnil);
>         UNGCPRO;
>         return 0;
>       }
> 
>       success_p = svg_load_image (f, img, contents, size);
>       xfree (contents);
>       UNGCPRO;
>     }
>   else
>     {
>       Lisp_Object data;
> 
>       data = image_spec_value (img->spec, QCdata, NULL);
>       success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
>     }
> 
>   return success_p;
> }
> 
> 
> static int
> svg_load_image (f, img, contents, size)
>      struct frame *f;
>      struct image *img;
>      unsigned char *contents;
>      unsigned int size;
> {
>   RsvgHandle *rsvg_handle;
>   GError *error = NULL;
>   GdkPixbuf *pixbuf;
>   int width;
>   int height;
>   const guint8 *pixels;
>   int rowstride;
>   XImagePtr ximg;
>   XColor background;
>   int x;
>   int y;
> 
>   g_type_init ();
>   rsvg_handle = fn_rsvg_handle_new ();
> 
>   fn_rsvg_handle_write (rsvg_handle, contents, size, &error);
>   if (error)
>     goto rsvg_error;
> 
>   fn_rsvg_handle_close (rsvg_handle, &error);
>   if (error)
>     goto rsvg_error;
> 
>   pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
>   eassert (pixbuf);
> 
>   width     = fn_gdk_pixbuf_get_width (pixbuf);
>   height    = fn_gdk_pixbuf_get_height (pixbuf);
>   pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
>   rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);
> 
>   eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
>   eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
>   eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
>   eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
> 
>   if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) {
>     g_object_unref (pixbuf);
>     return 0;
>   }
> 
>   init_color_table ();
> 
> #ifdef HAVE_X_WINDOWS
> 
>   background.pixel = FRAME_BACKGROUND_PIXEL (f);
>   x_query_color (f, &background);
> 
>   background.red   >>= 8;
>   background.green >>= 8;
>   background.blue  >>= 8;
> 
> #else /* not HAVE_X_WINDOWS */
> #error FIXME
> #endif
> 
>   for (y = 0; y < height; ++y)
>     {
>       for (x = 0; x < width; ++x)
> 	{
> 	  unsigned red;
> 	  unsigned green;
> 	  unsigned blue;
> 	  unsigned opacity;
> 
> 	  red     = *pixels++;
> 	  green   = *pixels++;
> 	  blue    = *pixels++;
> 	  opacity = *pixels++;
> 
> 	  red   = ((red * opacity)
> 		   + (background.red * ((1 << 8) - opacity)));
> 	  green = ((green * opacity)
> 		   + (background.green * ((1 << 8) - opacity)));
> 	  blue  = ((blue * opacity)
> 		   + (background.blue * ((1 << 8) - opacity)));
> 
> 	  XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
> 	}
> 
>       pixels += rowstride - 4 * width;
>     }
> 
> #ifdef COLOR_TABLE_SUPPORT
>   /* Remember colors allocated for this image.  */
>   img->colors = colors_in_color_table (&img->ncolors);
>   free_color_table ();
> #endif /* COLOR_TABLE_SUPPORT */
> 
>   g_object_unref (pixbuf);
> 
>   /* Put the image into the pixmap, then free the X image and its buffer. */
>   x_put_x_image (f, ximg, img->pixmap, width, height);
>   x_destroy_x_image (ximg);
> 
>   img->width  = width;
>   img->height = height;
> 
>   return 1;
> 
>  rsvg_error:
>   /* FIXME: Use error->message. */
>   image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
>   g_error_free (error);
>   return 0;
> }
> 
> #endif	/* defined (HAVE_RSVG) */
> 
> 
> 
8593a8867,8871
> #if 1 || defined (HAVE_RSVG)
>   if (EQ (type, Qsvg))
>     return CHECK_LIB_AVAILABLE (&svg_type, init_svg_functions, libraries);
> #endif
>   
8735a9014,9020
> #if 1 || defined (HAVE_RSVG)
>   Qsvg = intern ("svg");
>   staticpro (&Qsvg);
>   ADD_IMAGE_TYPE(Qsvg);
> #endif
> 
>   

[-- Attachment #3: Type: text/plain, Size: 124 bytes --]



>
> Has anyone adopted it for the current tree? If so, coculd it be
> applied?
>
> -- 
> Joakim Verona

-- 
Joakim Verona

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-09 21:17 ` joakim
@ 2007-08-09 21:36   ` David Kastrup
  2007-08-09 21:45     ` Jason Rumney
  2007-08-09 21:48     ` joakim
  2007-08-11  5:05   ` Richard Stallman
  1 sibling, 2 replies; 106+ messages in thread
From: David Kastrup @ 2007-08-09 21:36 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

joakim@verona.se writes:

> joakim@verona.se writes:
>
>> There was a patch for SVG support in Emacs in 2004.
>> This patch seems to no longer apply.
>
> I've adapted the SVG patch by Paul Pogonyshev for current emacs CVS.
> All I did was find the right place to insert the hunks, since the
> emacs source has changed a lot since the original patch.
>
> I tried it briefly on a Fedora 7 box. It seems to work nicely.
>
> What must be done in order for this patch to be applied?
>
> The only odd thing I can see is three lines like:
>
> #if 1 || defined (HAVE_RSVG)
>
> that ought to be the same as:
>
> #if defined (HAVE_RSVG)

No, it is the same as
#if 1
period.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-09 21:36   ` David Kastrup
@ 2007-08-09 21:45     ` Jason Rumney
  2007-08-09 21:58       ` joakim
  2007-08-09 21:48     ` joakim
  1 sibling, 1 reply; 106+ messages in thread
From: Jason Rumney @ 2007-08-09 21:45 UTC (permalink / raw)
  To: David Kastrup; +Cc: joakim, emacs-devel

David Kastrup wrote:
>> The only odd thing I can see is three lines like:
>>
>> #if 1 || defined (HAVE_RSVG)
>>
>> that ought to be the same as:
>>
>> #if defined (HAVE_RSVG)
>>     
>
> No, it is the same as
> #if 1
> period.
>   

Going back and looking at the original discussion from Sept 2004, the 1
|| is there because he hadn't bothered with the configury stuff that
would have made the HAVE_RSVG work.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-09 21:36   ` David Kastrup
  2007-08-09 21:45     ` Jason Rumney
@ 2007-08-09 21:48     ` joakim
  1 sibling, 0 replies; 106+ messages in thread
From: joakim @ 2007-08-09 21:48 UTC (permalink / raw)
  To: emacs-devel

David Kastrup <dak@gnu.org> writes:

> joakim@verona.se writes:
>
>> joakim@verona.se writes:
>>
>>> There was a patch for SVG support in Emacs in 2004.
>>> This patch seems to no longer apply.
>>
>> I've adapted the SVG patch by Paul Pogonyshev for current emacs CVS.
>> All I did was find the right place to insert the hunks, since the
>> emacs source has changed a lot since the original patch.
>>
>> I tried it briefly on a Fedora 7 box. It seems to work nicely.
>>
>> What must be done in order for this patch to be applied?
>>
>> The only odd thing I can see is three lines like:
>>
>> #if 1 || defined (HAVE_RSVG)
>>
>> that ought to be the same as:
>>
>> #if defined (HAVE_RSVG)
>
> No, it is the same as
> #if 1
> period.

Thanks! I suppose I should get more sleep.

#if defined (HAVE_RSVG)

seems to work though. Am I missing something else?

>
> -- 
> David Kastrup, Kriemhildstr. 15, 44793 Bochum

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-09 21:45     ` Jason Rumney
@ 2007-08-09 21:58       ` joakim
  0 siblings, 0 replies; 106+ messages in thread
From: joakim @ 2007-08-09 21:58 UTC (permalink / raw)
  To: emacs-devel

Jason Rumney <jasonr@gnu.org> writes:

> Going back and looking at the original discussion from Sept 2004, the 1
> || is there because he hadn't bothered with the configury stuff that
> would have made the HAVE_RSVG work.

I think the configury stuff does work, but maybe it didnt originaly.

This line in configure.in:

echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"

corectly prints "yes" if librsvg2-devel is installed, but "no" if it
isnt. The rest of the code gets to be correct if "#if 1 ..." is changed
to "if defined(HAVE_RSVG)" in  the patch.



-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-09 21:17 ` joakim
  2007-08-09 21:36   ` David Kastrup
@ 2007-08-11  5:05   ` Richard Stallman
  2007-08-14 11:57     ` joakim
  1 sibling, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-11  5:05 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

    I've adapted the SVG patch by Paul Pogonyshev for current emacs CVS.
    All I did was find the right place to insert the hunks, since the
    emacs source has changed a lot since the original patch.

    I tried it briefly on a Fedora 7 box. It seems to work nicely.

    What must be done in order for this patch to be applied?

We have the legal papers.  The code needs more comments.  We also need
the entry for etc/NEWS, and it would be nice to write text for the
manual now.  (I will polish it up once it is installed.)

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-11  5:05   ` Richard Stallman
@ 2007-08-14 11:57     ` joakim
  2007-08-14 23:26       ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-14 11:57 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I've adapted the SVG patch by Paul Pogonyshev for current emacs CVS.
>     All I did was find the right place to insert the hunks, since the
>     emacs source has changed a lot since the original patch.
>
>     I tried it briefly on a Fedora 7 box. It seems to work nicely.
>
>     What must be done in order for this patch to be applied?
>
> We have the legal papers.  The code needs more comments.  We also need
> the entry for etc/NEWS, and it would be nice to write text for the
> manual now.  (I will polish it up once it is installed.)

- Is this text for NEWS ok?

** Support for SVG images

Emacs now supports the SVG image format through librsvg2.


- There appears to be only generic text in the emacs manual for image
  viewing, valid for all image types. Viewing SVG images is no
  different from viewing JPG images, so I think the manual doesnt need
  any particular updates for this patch.

- I looked through the code briefly, and it didnt seem too bad on the
  commenting. Was it anything in particular you thought needed clarification?
  
-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-14 11:57     ` joakim
@ 2007-08-14 23:26       ` Richard Stallman
  2007-08-15  7:11         ` Mathias Dahl
  2007-08-16  9:03         ` joakim
  0 siblings, 2 replies; 106+ messages in thread
From: Richard Stallman @ 2007-08-14 23:26 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

    - Is this text for NEWS ok?

    ** Support for SVG images

    Emacs now supports the SVG image format through librsvg2.

Yes, it is good enough.

    - I looked through the code briefly, and it didnt seem too bad on the
      commenting. Was it anything in particular you thought needed clarification?

There are functions that don't even have a comment at the beginning to
say what they do and how to call them.  It needs a lot of improvement
in comments.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-14 23:26       ` Richard Stallman
@ 2007-08-15  7:11         ` Mathias Dahl
  2007-08-16  9:03         ` joakim
  1 sibling, 0 replies; 106+ messages in thread
From: Mathias Dahl @ 2007-08-15  7:11 UTC (permalink / raw)
  To: rms; +Cc: joakim, emacs-devel

>     - I looked through the code briefly, and it didnt seem too bad on the
>       commenting. Was it anything in particular you thought needed clarification?
>
> There are functions that don't even have a comment at the beginning to
> say what they do and how to call them.  It needs a lot of improvement
> in comments.

This is why I like M-x checkdoc RET so much :)

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-14 23:26       ` Richard Stallman
  2007-08-15  7:11         ` Mathias Dahl
@ 2007-08-16  9:03         ` joakim
  2007-08-17  0:32           ` Richard Stallman
  1 sibling, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-16  9:03 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     - Is this text for NEWS ok?
>
>     ** Support for SVG images
>
>     Emacs now supports the SVG image format through librsvg2.
>
> Yes, it is good enough.
>
>     - I looked through the code briefly, and it didnt seem too bad on the
>       commenting. Was it anything in particular you thought needed clarification?
>
> There are functions that don't even have a comment at the beginning to
> say what they do and how to call them.  It needs a lot of improvement
> in comments.

I did some commenting in the SVG handler part of image.c below.
The code seems to be mostly the same as for other image formats in
image.c.

Is it ok to discuss this part of the patch like this, and then I can
supply a new combined patch for consideration?

(again, I'm not the patchs original author, I'm just trying to help out to
get it clean enough for inclusion.)
 
/***********************************************************************
				 SVG
 ***********************************************************************/

#if defined (HAVE_RSVG)

/* Function prototypes.  */

static int svg_image_p P_ ((Lisp_Object object));
static int svg_load P_ ((struct frame *f, struct image *img));

static int svg_load_image P_ ((struct frame *, struct image *,
			       unsigned char *, unsigned int));

/* The symbol `svg' identifying images of this type. */

Lisp_Object Qsvg;

/* Indices of image specification fields in svg_format, below.  */

enum svg_keyword_index
{
  SVG_TYPE,
  SVG_DATA,
  SVG_FILE,
  SVG_ASCENT,
  SVG_MARGIN,
  SVG_RELIEF,
  SVG_ALGORITHM,
  SVG_HEURISTIC_MASK,
  SVG_MASK,
  SVG_BACKGROUND,
  SVG_LAST
};

/* Vector of image_keyword structures describing the format
   of valid user-defined image specifications.  */

static struct image_keyword svg_format[SVG_LAST] =
{
  {":type",		IMAGE_SYMBOL_VALUE,			1},
  {":data",		IMAGE_STRING_VALUE,			0},
  {":file",		IMAGE_STRING_VALUE,			0},
  {":ascent",		IMAGE_ASCENT_VALUE,			0},
  {":margin",		IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,	0},
  {":relief",		IMAGE_INTEGER_VALUE,			0},
  {":conversion",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":background",	IMAGE_STRING_OR_NIL_VALUE,		0}
};

/* Structure describing the image type `svg'.  */

static struct image_type svg_type =
{
  &Qsvg,
  svg_image_p,
  svg_load,
  x_clear_image,
  NULL
};


/* Return non-zero if OBJECT is a valid SVG image specification.  */

static int
svg_image_p (object)
     Lisp_Object object;
{
  struct image_keyword fmt[SVG_LAST];
  bcopy (svg_format, fmt, sizeof fmt);

  if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
    return 0;

  /* Must specify either the :data or :file keyword.  */
  return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
}

#include <librsvg/rsvg.h>

/* DEF_IMGLIB_FN() here? */

#define fn_rsvg_handle_new		rsvg_handle_new
#define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
#define fn_rsvg_handle_write		rsvg_handle_write
#define fn_rsvg_handle_close		rsvg_handle_close
#define fn_rsvg_handle_get_pixbuf	rsvg_handle_get_pixbuf
#define fn_rsvg_handle_free		rsvg_handle_free

#define fn_gdk_pixbuf_get_width		gdk_pixbuf_get_width
#define fn_gdk_pixbuf_get_height	gdk_pixbuf_get_height
#define fn_gdk_pixbuf_get_pixels	gdk_pixbuf_get_pixels
#define fn_gdk_pixbuf_get_rowstride	gdk_pixbuf_get_rowstride
#define fn_gdk_pixbuf_get_colorspace	gdk_pixbuf_get_colorspace
#define fn_gdk_pixbuf_get_n_channels	gdk_pixbuf_get_n_channels
#define fn_gdk_pixbuf_get_has_alpha	gdk_pixbuf_get_has_alpha
#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample


/* Load SVG image IMG for use on frame F.  Value is non-zero if
   successful.  */

static int
svg_load (f, img)
     struct frame *f;
     struct image *img;
{
  int success_p = 0;
  Lisp_Object file_name;

  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
  file_name = image_spec_value (img->spec, QCfile, NULL);
  if (STRINGP (file_name))
    {
      Lisp_Object file;
      unsigned char *contents;
      int size;
      struct gcpro gcpro1;

      file = x_find_image_file (file_name);
      GCPRO1 (file);
      if (!STRINGP (file))
      {
        image_error ("Cannot find image file `%s'", file_name, Qnil);
        UNGCPRO;
        return 0;
      }

      contents = slurp_file (SDATA (file), &size);
      if (contents == NULL)
      {
        image_error ("Error loading SVG image `%s'", img->spec, Qnil);
        UNGCPRO;
        return 0;
      }

      success_p = svg_load_image (f, img, contents, size);
      xfree (contents);
      UNGCPRO;
    }
  else
    {
      Lisp_Object data;

      data = image_spec_value (img->spec, QCdata, NULL);
      success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
    }

  return success_p;
}

/* helper function for svg_load, does the actual loading
 given contents and size, apart from frame and image structures, passed from svg_load

 Uses librsvg to do most of the image processing.
 
 Returns non-zero when sucessful
*/
static int
svg_load_image (f, img, contents, size)
     struct frame *f;
     struct image *img;
     unsigned char *contents;
     unsigned int size;
{
  RsvgHandle *rsvg_handle;
  GError *error = NULL;
  GdkPixbuf *pixbuf;
  int width;
  int height;
  const guint8 *pixels;
  int rowstride;
  XImagePtr ximg;
  XColor background;
  int x;
  int y;

  g_type_init ();
  rsvg_handle = fn_rsvg_handle_new ();

  fn_rsvg_handle_write (rsvg_handle, contents, size, &error);
  if (error)
    goto rsvg_error;

  fn_rsvg_handle_close (rsvg_handle, &error);
  if (error)
    goto rsvg_error;

  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
  eassert (pixbuf);

  width     = fn_gdk_pixbuf_get_width (pixbuf);
  height    = fn_gdk_pixbuf_get_height (pixbuf);
  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);

  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);

  if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) {
    g_object_unref (pixbuf);
    return 0;
  }

  init_color_table ();

#ifdef HAVE_X_WINDOWS

  background.pixel = FRAME_BACKGROUND_PIXEL (f);
  x_query_color (f, &background);

  background.red   >>= 8;
  background.green >>= 8;
  background.blue  >>= 8;

#else /* not HAVE_X_WINDOWS */
#error FIXME
#endif

  /* this loop handles opacity values, since emacs assumes non-transparent images.
   */
  for (y = 0; y < height; ++y)
    {
      for (x = 0; x < width; ++x)
	{
	  unsigned red;
	  unsigned green;
	  unsigned blue;
	  unsigned opacity;

	  red     = *pixels++;
	  green   = *pixels++;
	  blue    = *pixels++;
	  opacity = *pixels++;

	  red   = ((red * opacity)
		   + (background.red * ((1 << 8) - opacity)));
	  green = ((green * opacity)
		   + (background.green * ((1 << 8) - opacity)));
	  blue  = ((blue * opacity)
		   + (background.blue * ((1 << 8) - opacity)));

	  XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
	}

      pixels += rowstride - 4 * width;
    }

#ifdef COLOR_TABLE_SUPPORT
  /* Remember colors allocated for this image.  */
  img->colors = colors_in_color_table (&img->ncolors);
  free_color_table ();
#endif /* COLOR_TABLE_SUPPORT */

  g_object_unref (pixbuf);

  /* Put the image into the pixmap, then free the X image and its buffer. */
  x_put_x_image (f, ximg, img->pixmap, width, height);
  x_destroy_x_image (ximg);

  img->width  = width;
  img->height = height;

  return 1;

 rsvg_error:
  /* FIXME: Use error->message. */
  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
  g_error_free (error);
  return 0;
}

#endif	/* defined (HAVE_RSVG) */


-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-16  9:03         ` joakim
@ 2007-08-17  0:32           ` Richard Stallman
  2007-08-18 11:44             ` joakim
  0 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-17  0:32 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

    /* Structure describing the image type `svg'.  */

    static struct image_type svg_type =
    {
      &Qsvg,
      svg_image_p,
      svg_load,
      x_clear_image,
      NULL
    };

How about adding another comment for each field explaining what
the field means and why this particular value is used.

    /* DEF_IMGLIB_FN() here? */

I don't understand that comment -- if you do, could you make
it less terse, and clear?

    /* helper function for svg_load, does the actual loading
     given contents and size, apart from frame and image structures, passed from svg_load

     Uses librsvg to do most of the image processing.

     Returns non-zero when sucessful
    */

That is terse and cryptic.  Could you rewrite it to be clear
and format it the way we like to do?

The code of svg_load_image needs more comments explaining what the
parts of the code do.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-17  0:32           ` Richard Stallman
@ 2007-08-18 11:44             ` joakim
  2007-08-19  0:45               ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-18 11:44 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     /* Structure describing the image type `svg'.  */
>
>     static struct image_type svg_type =
>     {
>       &Qsvg,
>       svg_image_p,
>       svg_load,
>       x_clear_image,
>       NULL
>     };
>
> How about adding another comment for each field explaining what
> the field means and why this particular value is used.
>
>     /* DEF_IMGLIB_FN() here? */
>
> I don't understand that comment -- if you do, could you make
> it less terse, and clear?
>
>     /* helper function for svg_load, does the actual loading
>      given contents and size, apart from frame and image structures, passed from svg_load
>
>      Uses librsvg to do most of the image processing.
>
>      Returns non-zero when sucessful
>     */
>
> That is terse and cryptic.  Could you rewrite it to be clear
> and format it the way we like to do?
>
> The code of svg_load_image needs more comments explaining what the
> parts of the code do.

Here is a new try. I believe this is quite readable now.
Note that some of the difficulty in understanding this code comes from
reading it in isolation from the other code im image.c. I tried
adding some helpful pointers to other emacs code.


/***********************************************************************
				 SVG
 ***********************************************************************/

#if defined (HAVE_RSVG)

/* Function prototypes.  */

static int svg_image_p P_ ((Lisp_Object object));
static int svg_load P_ ((struct frame *f, struct image *img));

static int svg_load_image P_ ((struct frame *, struct image *,
			       unsigned char *, unsigned int));

/* The symbol `svg' identifying images of this type. */

Lisp_Object Qsvg;

/* Indices of image specification fields in svg_format, below.  */

enum svg_keyword_index
{
  SVG_TYPE,
  SVG_DATA,
  SVG_FILE,
  SVG_ASCENT,
  SVG_MARGIN,
  SVG_RELIEF,
  SVG_ALGORITHM,
  SVG_HEURISTIC_MASK,
  SVG_MASK,
  SVG_BACKGROUND,
  SVG_LAST
};

/* Vector of image_keyword structures describing the format
   of valid user-defined image specifications.  */

static struct image_keyword svg_format[SVG_LAST] =
{
  {":type",		IMAGE_SYMBOL_VALUE,			1},
  {":data",		IMAGE_STRING_VALUE,			0},
  {":file",		IMAGE_STRING_VALUE,			0},
  {":ascent",		IMAGE_ASCENT_VALUE,			0},
  {":margin",		IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,	0},
  {":relief",		IMAGE_INTEGER_VALUE,			0},
  {":conversion",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":background",	IMAGE_STRING_OR_NIL_VALUE,		0}
};

/* Structure describing the image type `svg'.  Its the same type of
   structure defined for all image formats, handled by emacs image functions.
   see struct image_type in dispextern.h
*/

static struct image_type svg_type =
{
  &Qsvg, /* an identifier showing that this is an image structure for the SVG format*/
  svg_image_p, /* handle to a function that can be used to identify a svg file*/
  svg_load, /* handle to function used to load a svg file*/
  x_clear_image,/* handle to function to free sresources for SVG*/
  NULL /* an internal field to link to the next image type in a list of image types, will be filled in when registering the format*/
};


/* Return non-zero if OBJECT is a valid SVG image specification.
   do this by calling parse_image_spec and supplying the keywords that identify the SVG format
 */

static int
svg_image_p (object)
     Lisp_Object object;
{
  struct image_keyword fmt[SVG_LAST];
  bcopy (svg_format, fmt, sizeof fmt);

  if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
    return 0;

  /* Must specify either the :data or :file keyword.  */
  return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
}

#include <librsvg/rsvg.h>

/* DEF_IMGLIB_FN() here in the future.
this macro is used to handle loading of dynamic link library functions for various OS:es.
currently only librsvg2 is supportedd, which is only available for X, so its not strictly necessary yet.
The current code is thought to be compatible with this scheme because of the defines below, should librsvg2 become available on more plattforms.
*/

#define fn_rsvg_handle_new		rsvg_handle_new
#define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
#define fn_rsvg_handle_write		rsvg_handle_write
#define fn_rsvg_handle_close		rsvg_handle_close
#define fn_rsvg_handle_get_pixbuf	rsvg_handle_get_pixbuf
#define fn_rsvg_handle_free		rsvg_handle_free

#define fn_gdk_pixbuf_get_width		gdk_pixbuf_get_width
#define fn_gdk_pixbuf_get_height	gdk_pixbuf_get_height
#define fn_gdk_pixbuf_get_pixels	gdk_pixbuf_get_pixels
#define fn_gdk_pixbuf_get_rowstride	gdk_pixbuf_get_rowstride
#define fn_gdk_pixbuf_get_colorspace	gdk_pixbuf_get_colorspace
#define fn_gdk_pixbuf_get_n_channels	gdk_pixbuf_get_n_channels
#define fn_gdk_pixbuf_get_has_alpha	gdk_pixbuf_get_has_alpha
#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample


/* Load SVG image IMG for use on frame F.  Value is non-zero if
   successful. this function wil go into the svg_type structure, and
   the prototype thus needs to be compatible with that structure */

static int
svg_load (f, img)
     struct frame *f;
     struct image *img;
{
  int success_p = 0;
  Lisp_Object file_name;

  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
  file_name = image_spec_value (img->spec, QCfile, NULL);
  if (STRINGP (file_name))
    {
      Lisp_Object file;
      unsigned char *contents;
      int size;
      struct gcpro gcpro1;

      file = x_find_image_file (file_name);
      GCPRO1 (file);
      if (!STRINGP (file))
      {
        image_error ("Cannot find image file `%s'", file_name, Qnil);
        UNGCPRO;
        return 0;
      }

      contents = slurp_file (SDATA (file), &size); /* read the entire file into memory*/
      if (contents == NULL)
      {
        image_error ("Error loading SVG image `%s'", img->spec, Qnil);
        UNGCPRO;
        return 0;
      }

      success_p = svg_load_image (f, img, contents, size); /* if the file was slurped into memory properly, parse it*/
      xfree (contents);
      UNGCPRO;
    }
  else/*its not a file, its a lisp object*/
    {
      Lisp_Object data;

      data = image_spec_value (img->spec, QCdata, NULL);
      success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
    }

  return success_p;
}

/* helper function for svg_load, does the actual loading
 given contents and size, apart from frame and image structures, passed from svg_load

 Uses librsvg to do most of the image processing.
 
 Returns non-zero when sucessful
*/
static int
svg_load_image (f, img, contents, size)
     struct frame *f;
     struct image *img;
     unsigned char *contents;
     unsigned int size;
{
  RsvgHandle *rsvg_handle;
  GError *error = NULL;
  GdkPixbuf *pixbuf;
  int width;
  int height;
  const guint8 *pixels;
  int rowstride;
  XImagePtr ximg;
  XColor background;
  int x;
  int y;

  g_type_init (); /*glib function that must be called prior to using gnome type library functions*/
  rsvg_handle = fn_rsvg_handle_new ();/* make a handle to a new rsvg object*/

  fn_rsvg_handle_write (rsvg_handle, contents, size, &error);/*parse "contents" and fill in the rsvg_handle*/
  if (error)
    goto rsvg_error;

  fn_rsvg_handle_close (rsvg_handle, &error);/*the parsing is complete, rsvg_handle is ready to use*/
  if (error)
    goto rsvg_error;

  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);/* we can now get a valid pixel buffer from the svg file, if all went ok*/
  eassert (pixbuf);

  /* extract some meta data from he svg handle*/
  width     = fn_gdk_pixbuf_get_width (pixbuf);
  height    = fn_gdk_pixbuf_get_height (pixbuf);
  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);

  /*validate the svg meta data*/
  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);

  /* try to create a x pixmap to hold the svg pixmap*/
  if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) {
    g_object_unref (pixbuf);
    return 0;
  }

  init_color_table ();

#ifdef HAVE_X_WINDOWS

  background.pixel = FRAME_BACKGROUND_PIXEL (f);
  x_query_color (f, &background);

  /* svg pixmaps specify transparency in the last byte, so right shift 8 bits to get rid of it, since emacs doesnt support transparency*/
  background.red   >>= 8;
  background.green >>= 8;
  background.blue  >>= 8;

#else /* not HAVE_X_WINDOWS */
#error FIXME
#endif

  /* this loop handles opacity values, since emacs assumes
     non-transparent images.  Each pixel must be "flattened" by
     calculating he resulting color, given the transparency of the
     pixel, and the image background color.
   */
  for (y = 0; y < height; ++y)
    {
      for (x = 0; x < width; ++x)
	{
	  unsigned red;
	  unsigned green;
	  unsigned blue;
	  unsigned opacity;

	  red     = *pixels++;
	  green   = *pixels++;
	  blue    = *pixels++;
	  opacity = *pixels++;

	  red   = ((red * opacity)
		   + (background.red * ((1 << 8) - opacity)));
	  green = ((green * opacity)
		   + (background.green * ((1 << 8) - opacity)));
	  blue  = ((blue * opacity)
		   + (background.blue * ((1 << 8) - opacity)));

	  XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
	}

      pixels += rowstride - 4 * width;
    }

#ifdef COLOR_TABLE_SUPPORT
  /* Remember colors allocated for this image.  */
  img->colors = colors_in_color_table (&img->ncolors);
  free_color_table ();
#endif /* COLOR_TABLE_SUPPORT */

  g_object_unref (pixbuf);

  /* Put the image into the pixmap, then free the X image and its buffer. */
  x_put_x_image (f, ximg, img->pixmap, width, height);
  x_destroy_x_image (ximg);

  img->width  = width;
  img->height = height;

  return 1;

 rsvg_error:
  /* FIXME: Use error->message. */
  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
  g_error_free (error);
  return 0;
}

#endif	/* defined (HAVE_RSVG) */



-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-18 11:44             ` joakim
@ 2007-08-19  0:45               ` Richard Stallman
  2007-08-19 12:35                 ` joakim
  0 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-19  0:45 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

You're getting closer.  There are enough comments now,
but they need to be formatted cleanly and consistently with the
rest of Emacs.

    /* DEF_IMGLIB_FN() here in the future.

Do you mean

    /* TO DO: use DEF_IMGLIB_FN here.

It is vital to use words like "TO DO:" and "use",
because following such patterns makes the meaning clear.

(In GNU we don't write `()' after a function name.)

Aside from that, it will be clean if you fill the comment lines
to 70 character width.

Also, please use two spaces at the end of a sentence,
and please put a period and two spaces at the end of every comment
that contents sentences.

    /* Load SVG image IMG for use on frame F.  Value is non-zero if
       successful. this function wil go into the svg_type structure, and
       the prototype thus needs to be compatible with that structure */

should be

    /* Load SVG image IMG for use on frame F.  Value is non-zero if
       successful.  This function will go into the svg_type structure, and
       the prototype, so it needs to be compatible with that structure.  */


	  contents = slurp_file (SDATA (file), &size); /* read the entire file into memory*/

That style makes lines wide and hard to read, so please put the comment
on a separate line.  It should start with a capital letter, and end
with a period and two spaces.

          /* Read the entire file into memory.  */
	  contents = slurp_file (SDATA (file), &size);


    /* helper function for svg_load, does the actual loading
     given contents and size, apart from frame and image structures, passed from svg_load

     Uses librsvg to do most of the image processing.

     Returns non-zero when sucessful
    */

This should explain each of the arguments by name.
Please also start it with a capital letter, and end it with a period,
and avoid lines that are too long.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-19  0:45               ` Richard Stallman
@ 2007-08-19 12:35                 ` joakim
  2007-08-19 22:30                   ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-19 12:35 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> You're getting closer.  There are enough comments now,
> but they need to be formatted cleanly and consistently with the
> rest of Emacs.
>
>     /* DEF_IMGLIB_FN() here in the future.
>
> Do you mean
>
>     /* TO DO: use DEF_IMGLIB_FN here.
>
> It is vital to use words like "TO DO:" and "use",
> because following such patterns makes the meaning clear.
>
> (In GNU we don't write `()' after a function name.)
>
> Aside from that, it will be clean if you fill the comment lines
> to 70 character width.
>
> Also, please use two spaces at the end of a sentence,
> and please put a period and two spaces at the end of every comment
> that contents sentences.
>
>     /* Load SVG image IMG for use on frame F.  Value is non-zero if
>        successful. this function wil go into the svg_type structure, and
>        the prototype thus needs to be compatible with that structure */
>
> should be
>
>     /* Load SVG image IMG for use on frame F.  Value is non-zero if
>        successful.  This function will go into the svg_type structure, and
>        the prototype, so it needs to be compatible with that structure.  */
>
>
> 	  contents = slurp_file (SDATA (file), &size); /* read the entire file into memory*/
>
> That style makes lines wide and hard to read, so please put the comment
> on a separate line.  It should start with a capital letter, and end
> with a period and two spaces.
>
>           /* Read the entire file into memory.  */
> 	  contents = slurp_file (SDATA (file), &size);
>
>
>     /* helper function for svg_load, does the actual loading
>      given contents and size, apart from frame and image structures, passed from svg_load
>
>      Uses librsvg to do most of the image processing.
>
>      Returns non-zero when sucessful
>     */
>
> This should explain each of the arguments by name.
> Please also start it with a capital letter, and end it with a period,
> and avoid lines that are too long.

Ok, this is the next iteration. Thanks for your patience!


/***********************************************************************
				 SVG
 ***********************************************************************/

#if defined (HAVE_RSVG)

/* Function prototypes.  */

static int svg_image_p P_ ((Lisp_Object object));
static int svg_load P_ ((struct frame *f, struct image *img));

static int svg_load_image P_ ((struct frame *, struct image *,
			       unsigned char *, unsigned int));

/* The symbol `svg' identifying images of this type. */

Lisp_Object Qsvg;

/* Indices of image specification fields in svg_format, below.  */

enum svg_keyword_index
{
  SVG_TYPE,
  SVG_DATA,
  SVG_FILE,
  SVG_ASCENT,
  SVG_MARGIN,
  SVG_RELIEF,
  SVG_ALGORITHM,
  SVG_HEURISTIC_MASK,
  SVG_MASK,
  SVG_BACKGROUND,
  SVG_LAST
};

/* Vector of image_keyword structures describing the format
   of valid user-defined image specifications.  */

static struct image_keyword svg_format[SVG_LAST] =
{
  {":type",		IMAGE_SYMBOL_VALUE,			1},
  {":data",		IMAGE_STRING_VALUE,			0},
  {":file",		IMAGE_STRING_VALUE,			0},
  {":ascent",		IMAGE_ASCENT_VALUE,			0},
  {":margin",		IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,	0},
  {":relief",		IMAGE_INTEGER_VALUE,			0},
  {":conversion",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
  {":background",	IMAGE_STRING_OR_NIL_VALUE,		0}
};

/* Structure describing the image type `svg'.  Its the same type of
   structure defined for all image formats, handled by emacs image
   functions.  See struct image_type in dispextern.h.  */

static struct image_type svg_type =
{
  /* An identifier showing that this is an image structure for the SVG format.  */
  &Qsvg,
  /* Handle to a function that can be used to identify a SVG file.  */
  svg_image_p,
  /* Handle to function used to load a SVG file.  */
  svg_load,
  /* Handle to function to free sresources for SVG.  */
  x_clear_image,
  /* An internal field to link to the next image type in a list of
     image types, will be filled in when registering the format.  */
  NULL  
};


/* Return non-zero if OBJECT is a valid SVG image specification.  Do
   this by calling parse_image_spec and supplying the keywords that
   identify the SVG format.   */

static int
svg_image_p (object)
     Lisp_Object object;
{
  struct image_keyword fmt[SVG_LAST];
  bcopy (svg_format, fmt, sizeof fmt);

  if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
    return 0;

  /* Must specify either the :data or :file keyword.  */
  return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
}

#include <librsvg/rsvg.h>

/* TO DO: define DEF_IMGLIB_FN here.  This macro is used to handle
loading of dynamic link library functions for various OS:es.
Currently only librsvg2 is supported, which is only available for X,
so its not strictly necessary yet.  The current code is thought to be
compatible with this scheme because of the defines below, should
librsvg2 become available on more plattforms.  */

#define fn_rsvg_handle_new		rsvg_handle_new
#define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
#define fn_rsvg_handle_write		rsvg_handle_write
#define fn_rsvg_handle_close		rsvg_handle_close
#define fn_rsvg_handle_get_pixbuf	rsvg_handle_get_pixbuf
#define fn_rsvg_handle_free		rsvg_handle_free

#define fn_gdk_pixbuf_get_width		gdk_pixbuf_get_width
#define fn_gdk_pixbuf_get_height	gdk_pixbuf_get_height
#define fn_gdk_pixbuf_get_pixels	gdk_pixbuf_get_pixels
#define fn_gdk_pixbuf_get_rowstride	gdk_pixbuf_get_rowstride
#define fn_gdk_pixbuf_get_colorspace	gdk_pixbuf_get_colorspace
#define fn_gdk_pixbuf_get_n_channels	gdk_pixbuf_get_n_channels
#define fn_gdk_pixbuf_get_has_alpha	gdk_pixbuf_get_has_alpha
#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample


/* Load SVG image IMG for use on frame F.  Value is non-zero if
   successful. this function will go into the svg_type structure, and
   the prototype thus needs to be compatible with that structure.  */

static int
svg_load (f, img)
     struct frame *f;
     struct image *img;
{
  int success_p = 0;
  Lisp_Object file_name;

  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
  file_name = image_spec_value (img->spec, QCfile, NULL);
  if (STRINGP (file_name))
    {
      Lisp_Object file;
      unsigned char *contents;
      int size;
      struct gcpro gcpro1;

      file = x_find_image_file (file_name);
      GCPRO1 (file);
      if (!STRINGP (file))
      {
        image_error ("Cannot find image file `%s'", file_name, Qnil);
        UNGCPRO;
        return 0;
      }
      
      /* Read the entire file into memory.  */
      contents = slurp_file (SDATA (file), &size);
      if (contents == NULL)
      {
        image_error ("Error loading SVG image `%s'", img->spec, Qnil);
        UNGCPRO;
        return 0;
      }
      /* If the file was slurped into memory properly, parse it.  */
      success_p = svg_load_image (f, img, contents, size); 
      xfree (contents);
      UNGCPRO;
    }
  /* Else its not a file, its a lisp object.  Load the image from a
     lisp object rather than a file.  */
  else
    {
      Lisp_Object data;

      data = image_spec_value (img->spec, QCdata, NULL);
      success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
    }

  return success_p;
}

/* svg_load_image is a helper function for svg_load, which does the actual
 loading given contents and size, apart from frame and image
 structures, passed from svg_load.

 Uses librsvg to do most of the image processing.
 
 Returns non-zero when sucessful.  */
static int
svg_load_image (f, img, contents, size)
    /* Pointer to emacs frame sturcture.  */
     struct frame *f;
     /* Pointer to emacs image structure.  */
     struct image *img;
     /* String containing the SVG XML data to be parsed.  */
     unsigned char *contents;
     /* Size of data in bytes.  */
     unsigned int size;
{
  RsvgHandle *rsvg_handle;
  GError *error = NULL;
  GdkPixbuf *pixbuf;
  int width;
  int height;
  const guint8 *pixels;
  int rowstride;
  XImagePtr ximg;
  XColor background;
  int x;
  int y;

  /* g_type_init is a glib function that must be called prior to using
     gnome type library functions.  */
  g_type_init ();
  /* Make a handle to a new rsvg object.  */
  rsvg_handle = fn_rsvg_handle_new ();

  /* Parse the contents argument and fill in the rsvg_handle.  */
  fn_rsvg_handle_write (rsvg_handle, contents, size, &error);
  if (error)
    goto rsvg_error;

  /* The parsing is complete, rsvg_handle is ready to used, close it
     for further writes.  */
  fn_rsvg_handle_close (rsvg_handle, &error);
  if (error)
    goto rsvg_error;
  /* We can now get a valid pixel buffer from the svg file, if all
     went ok.  */
  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
  eassert (pixbuf);

  /* Extract some meta data from the svg handle.  */
  width     = fn_gdk_pixbuf_get_width (pixbuf);
  height    = fn_gdk_pixbuf_get_height (pixbuf);
  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);

  /* Validate the svg meta data.  */
  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);

  /* Try to create a x pixmap to hold the svg pixmap.  */
  if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) {
    g_object_unref (pixbuf);
    return 0;
  }

  init_color_table ();

  /* TODO: The code is somewhat prepared for other environments than
     X, but is far from done.  */
#ifdef HAVE_X_WINDOWS

  background.pixel = FRAME_BACKGROUND_PIXEL (f);
  x_query_color (f, &background);

  /* SVG pixmaps specify transparency in the last byte, so right shift
     8 bits to get rid of it, since emacs doesnt support
     transparency.  */
  background.red   >>= 8;
  background.green >>= 8;
  background.blue  >>= 8;

#else /* not HAVE_X_WINDOWS */
#error FIXME
#endif

  /* This loop handles opacity values, since Emacs assumes
     non-transparent images.  Each pixel must be "flattened" by
     calculating he resulting color, given the transparency of the
     pixel, and the image background color.   */
  for (y = 0; y < height; ++y)
    {
      for (x = 0; x < width; ++x)
	{
	  unsigned red;
	  unsigned green;
	  unsigned blue;
	  unsigned opacity;

	  red     = *pixels++;
	  green   = *pixels++;
	  blue    = *pixels++;
	  opacity = *pixels++;

	  red   = ((red * opacity)
		   + (background.red * ((1 << 8) - opacity)));
	  green = ((green * opacity)
		   + (background.green * ((1 << 8) - opacity)));
	  blue  = ((blue * opacity)
		   + (background.blue * ((1 << 8) - opacity)));

	  XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
	}

      pixels += rowstride - 4 * width;
    }

#ifdef COLOR_TABLE_SUPPORT
  /* Remember colors allocated for this image.  */
  img->colors = colors_in_color_table (&img->ncolors);
  free_color_table ();
#endif /* COLOR_TABLE_SUPPORT */

  g_object_unref (pixbuf);

  /* Put the image into the pixmap, then free the X image and its
     buffer.  */
  x_put_x_image (f, ximg, img->pixmap, width, height);
  x_destroy_x_image (ximg);

  img->width  = width;
  img->height = height;

  return 1;

 rsvg_error:
  /* FIXME: Use error->message so the user knows what is the actual
     problem with the image.  */
  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
  g_error_free (error);
  return 0;
}

#endif	/* defined (HAVE_RSVG) */

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-19 12:35                 ` joakim
@ 2007-08-19 22:30                   ` Richard Stallman
  2007-08-20  9:31                     ` joakim
  0 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-19 22:30 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

The code is now ready for installation.  Thank you.
To install it requires a change log entry, and a NEWS entry.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-19 22:30                   ` Richard Stallman
@ 2007-08-20  9:31                     ` joakim
  2007-08-21 14:45                       ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-20  9:31 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 512 bytes --]

Richard Stallman <rms@gnu.org> writes:

> The code is now ready for installation.  Thank you.
> To install it requires a change log entry, and a NEWS entry.

Ok, heres a new version of the patch, and a NEWS entry that was agreed
upon earlier. I suppose the committer provides a changelog entry?
Please remember that Paul Pogonyshev is the author of the patch, I've
just cleaned it up a bit.


NEWS entry:

    ** Support for SVG images

    Emacs now supports the SVG image format through librsvg2.

Patch:    


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: svg.patch --]
[-- Type: text/x-patch, Size: 16687 bytes --]

? emacs_svg.patch
Index: configure.in
===================================================================
RCS file: /sources/emacs/emacs/configure.in,v
retrieving revision 1.459
diff -u -p -r1.459 configure.in
--- configure.in	26 Jul 2007 05:26:01 -0000	1.459
+++ configure.in	20 Aug 2007 08:47:43 -0000
@@ -110,10 +110,12 @@ AC_ARG_WITH(png,
 [  --with-png              use -lpng for displaying PNG images])
 AC_ARG_WITH(gpm,
 [  --with-gpm              use -lgpm for mouse support on a GNU/Linux console])
+AC_ARG_WITH(rsvg,
+[  --with-rsvg             use -lrsvg-2 for displaying SVG images])
 AC_ARG_WITH(gtk,
 [  --with-gtk              use GTK (same as --with-x-toolkit=gtk)])
 AC_ARG_WITH(pkg-config-prog,
-[  --with-pkg-config-prog  Path to pkg-config to use for finding GTK])
+[  --with-pkg-config-prog  Path to pkg-config to use for finding GTK and librsvg])
 AC_ARG_WITH(toolkit-scroll-bars,
 [  --without-toolkit-scroll-bars
                           don't use Motif or Xaw3d scroll bars])
@@ -2122,6 +2124,32 @@ fail;
   fi
 fi
 
+### Use -lrsvg-2 if available, unless `--with-rsvg=no' is specified.
+HAVE_RSVG=no
+if test "${HAVE_X11}" = "yes"; then
+  if test "${with_rsvg}" != "no"; then
+    dnl Check if `--with-pkg-config-prog' has been given.
+    if test "X${with_pkg_config_prog}" != X; then
+      PKG_CONFIG="${with_pkg_config_prog}"
+    fi
+
+    RSVG_REQUIRED=2.0.0
+    RSVG_MODULE="librsvg-2.0 >= $RSVG_REQUIRED"
+
+    PKG_CHECK_MODULES(RSVG, $RSVG_MODULE, :, :)
+    AC_SUBST(RSVG_CFLAGS)
+    AC_SUBST(RSVG_LIBS)
+
+    if test ".${RSVG_CFLAGS}" != "."; then
+      HAVE_RSVG=yes
+      AC_DEFINE(HAVE_RSVG, 1, [Define to 1 if using librsvg.])
+      CFLAGS="$CFLAGS $RSVG_CFLAGS"
+      LIBS="$RSVG_LIBS $LIBS"
+    fi
+  fi
+fi
+
+
 HAVE_GTK=no
 if test "${with_gtk}" = "yes" && test "$USE_X_TOOLKIT" = "gtk"; then
   USE_X_TOOLKIT=none
@@ -3362,6 +3390,7 @@ echo "  Does Emacs use -ljpeg?          
 echo "  Does Emacs use -ltiff?                                  ${HAVE_TIFF}"
 echo "  Does Emacs use a gif library?                           ${HAVE_GIF} $ac_gif_lib_name"
 echo "  Does Emacs use -lpng?                                   ${HAVE_PNG}"
+echo "  Does Emacs use -lrsvg-2?                                ${HAVE_RSVG}"
 echo "  Does Emacs use -lgpm?                                   ${HAVE_GPM}"
 echo "  Does Emacs use X toolkit scroll bars?                   ${USE_TOOLKIT_SCROLL_BARS}"
 echo
Index: lisp/image-file.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/image-file.el,v
retrieving revision 1.29
diff -u -p -r1.29 image-file.el
--- lisp/image-file.el	26 Jul 2007 05:26:26 -0000	1.29
+++ lisp/image-file.el	20 Aug 2007 08:48:30 -0000
@@ -39,7 +39,7 @@
 
 ;;;###autoload
 (defcustom image-file-name-extensions
-  '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm")
+  '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")
   "*A list of image-file filename extensions.
 Filenames having one of these extensions are considered image files,
 in addition to those matching `image-file-name-regexps'.
Index: lisp/image.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/image.el,v
retrieving revision 1.72
diff -u -p -r1.72 image.el
--- lisp/image.el	26 Jul 2007 05:26:26 -0000	1.72
+++ lisp/image.el	20 Aug 2007 08:48:30 -0000
@@ -43,7 +43,8 @@
 static char \\1_bits" . xbm)
     ("\\`\\(?:MM\0\\*\\|II\\*\0\\)" . tiff)
     ("\\`[\t\n\r ]*%!PS" . postscript)
-    ("\\`\xff\xd8" . (image-jpeg-p . jpeg)))
+    ("\\`\xff\xd8" . (image-jpeg-p . jpeg))
+    ("\\`<\\?xml " . svg))
   "Alist of (REGEXP . IMAGE-TYPE) pairs used to auto-detect image types.
 When the first bytes of an image file match REGEXP, it is assumed to
 be of image type IMAGE-TYPE if IMAGE-TYPE is a symbol.  If not a symbol,
Index: src/Makefile.in
===================================================================
RCS file: /sources/emacs/emacs/src/Makefile.in,v
retrieving revision 1.346
diff -u -p -r1.346 Makefile.in
--- src/Makefile.in	26 Jul 2007 05:27:47 -0000	1.346
+++ src/Makefile.in	20 Aug 2007 08:49:46 -0000
@@ -281,7 +281,7 @@ TOOLKIT_DEFINES =
 
 /* C_SWITCH_X_SITE must come before C_SWITCH_X_MACHINE and C_SWITCH_X_SYSTEM
    since it may have -I options that should override those two.  */
-ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS}
+ALL_CFLAGS=-Demacs -DHAVE_CONFIG_H $(TOOLKIT_DEFINES) $(MYCPPFLAGS) -I. -I${srcdir} C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_SITE @RSVG_CFLAGS@ C_SWITCH_X_SITE C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM C_SWITCH_SYSTEM_TEMACS ${CFLAGS_SOUND} ${CFLAGS}
 .c.o:
 	$(CC) -c $(CPPFLAGS) $(ALL_CFLAGS) $<
 
@@ -450,7 +450,7 @@ XFT_LIBS=@XFT_LIBS@
 /* LD_SWITCH_X_DEFAULT comes after everything else that specifies
    options for where to find X libraries, but before those libraries.  */
 X11_LDFLAGS = LD_SWITCH_X_SITE LD_SWITCH_X_DEFAULT
-LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS)
+LIBX= $(LIBXMENU) $(X11_LDFLAGS) $(LIBXT) LIBTIFF LIBJPEG LIBPNG LIBGIF LIBXPM @RSVG_LIBS@ LIB_X11_LIB LIBX11_MACHINE LIBX11_SYSTEM $(XFT_LIBS)
 #else /* not HAVE_X11 */
 LIBX= $(LIBXMENU) LD_SWITCH_X_SITE -lX10 LIBX10_MACHINE LIBX10_SYSTEM
 #endif /* not HAVE_X11 */
Index: src/image.c
===================================================================
RCS file: /sources/emacs/emacs/src/image.c,v
retrieving revision 1.77
diff -u -p -r1.77 image.c
--- src/image.c	7 Aug 2007 16:25:26 -0000	1.77
+++ src/image.c	20 Aug 2007 08:49:50 -0000
@@ -8199,6 +8199,329 @@ gif_load (f, img)
 #endif /* HAVE_GIF */
 
 
+ 
+/***********************************************************************
+				 SVG
+ ***********************************************************************/
+
+#if defined (HAVE_RSVG)
+
+/* Function prototypes.  */
+
+static int svg_image_p P_ ((Lisp_Object object));
+static int svg_load P_ ((struct frame *f, struct image *img));
+
+static int svg_load_image P_ ((struct frame *, struct image *,
+			       unsigned char *, unsigned int));
+
+/* The symbol `svg' identifying images of this type. */
+
+Lisp_Object Qsvg;
+
+/* Indices of image specification fields in svg_format, below.  */
+
+enum svg_keyword_index
+{
+  SVG_TYPE,
+  SVG_DATA,
+  SVG_FILE,
+  SVG_ASCENT,
+  SVG_MARGIN,
+  SVG_RELIEF,
+  SVG_ALGORITHM,
+  SVG_HEURISTIC_MASK,
+  SVG_MASK,
+  SVG_BACKGROUND,
+  SVG_LAST
+};
+
+/* Vector of image_keyword structures describing the format
+   of valid user-defined image specifications.  */
+
+static struct image_keyword svg_format[SVG_LAST] =
+{
+  {":type",		IMAGE_SYMBOL_VALUE,			1},
+  {":data",		IMAGE_STRING_VALUE,			0},
+  {":file",		IMAGE_STRING_VALUE,			0},
+  {":ascent",		IMAGE_ASCENT_VALUE,			0},
+  {":margin",		IMAGE_POSITIVE_INTEGER_VALUE_OR_PAIR,	0},
+  {":relief",		IMAGE_INTEGER_VALUE,			0},
+  {":conversion",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
+  {":heuristic-mask",	IMAGE_DONT_CHECK_VALUE_TYPE,		0},
+  {":mask",		IMAGE_DONT_CHECK_VALUE_TYPE,		0},
+  {":background",	IMAGE_STRING_OR_NIL_VALUE,		0}
+};
+
+/* Structure describing the image type `svg'.  Its the same type of
+   structure defined for all image formats, handled by emacs image
+   functions.  See struct image_type in dispextern.h.  */
+
+static struct image_type svg_type =
+{
+  /* An identifier showing that this is an image structure for the SVG format.  */
+  &Qsvg,
+  /* Handle to a function that can be used to identify a SVG file.  */
+  svg_image_p,
+  /* Handle to function used to load a SVG file.  */
+  svg_load,
+  /* Handle to function to free sresources for SVG.  */
+  x_clear_image,
+  /* An internal field to link to the next image type in a list of
+     image types, will be filled in when registering the format.  */
+  NULL  
+};
+
+
+/* Return non-zero if OBJECT is a valid SVG image specification.  Do
+   this by calling parse_image_spec and supplying the keywords that
+   identify the SVG format.   */
+
+static int
+svg_image_p (object)
+     Lisp_Object object;
+{
+  struct image_keyword fmt[SVG_LAST];
+  bcopy (svg_format, fmt, sizeof fmt);
+
+  if (!parse_image_spec (object, fmt, SVG_LAST, Qsvg))
+    return 0;
+
+  /* Must specify either the :data or :file keyword.  */
+  return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
+}
+
+#include <librsvg/rsvg.h>
+
+/* TO DO: define DEF_IMGLIB_FN here.  This macro is used to handle
+loading of dynamic link library functions for various OS:es.
+Currently only librsvg2 is supported, which is only available for X,
+so its not strictly necessary yet.  The current code is thought to be
+compatible with this scheme because of the defines below, should
+librsvg2 become available on more plattforms.  */
+
+#define fn_rsvg_handle_new		rsvg_handle_new
+#define fn_rsvg_handle_set_size_callback rsvg_handle_set_size_callback
+#define fn_rsvg_handle_write		rsvg_handle_write
+#define fn_rsvg_handle_close		rsvg_handle_close
+#define fn_rsvg_handle_get_pixbuf	rsvg_handle_get_pixbuf
+#define fn_rsvg_handle_free		rsvg_handle_free
+
+#define fn_gdk_pixbuf_get_width		gdk_pixbuf_get_width
+#define fn_gdk_pixbuf_get_height	gdk_pixbuf_get_height
+#define fn_gdk_pixbuf_get_pixels	gdk_pixbuf_get_pixels
+#define fn_gdk_pixbuf_get_rowstride	gdk_pixbuf_get_rowstride
+#define fn_gdk_pixbuf_get_colorspace	gdk_pixbuf_get_colorspace
+#define fn_gdk_pixbuf_get_n_channels	gdk_pixbuf_get_n_channels
+#define fn_gdk_pixbuf_get_has_alpha	gdk_pixbuf_get_has_alpha
+#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
+
+
+/* Load SVG image IMG for use on frame F.  Value is non-zero if
+   successful. this function will go into the svg_type structure, and
+   the prototype thus needs to be compatible with that structure.  */
+
+static int
+svg_load (f, img)
+     struct frame *f;
+     struct image *img;
+{
+  int success_p = 0;
+  Lisp_Object file_name;
+
+  /* If IMG->spec specifies a file name, create a non-file spec from it.  */
+  file_name = image_spec_value (img->spec, QCfile, NULL);
+  if (STRINGP (file_name))
+    {
+      Lisp_Object file;
+      unsigned char *contents;
+      int size;
+      struct gcpro gcpro1;
+
+      file = x_find_image_file (file_name);
+      GCPRO1 (file);
+      if (!STRINGP (file))
+      {
+        image_error ("Cannot find image file `%s'", file_name, Qnil);
+        UNGCPRO;
+        return 0;
+      }
+      
+      /* Read the entire file into memory.  */
+      contents = slurp_file (SDATA (file), &size);
+      if (contents == NULL)
+      {
+        image_error ("Error loading SVG image `%s'", img->spec, Qnil);
+        UNGCPRO;
+        return 0;
+      }
+      /* If the file was slurped into memory properly, parse it.  */
+      success_p = svg_load_image (f, img, contents, size); 
+      xfree (contents);
+      UNGCPRO;
+    }
+  /* Else its not a file, its a lisp object.  Load the image from a
+     lisp object rather than a file.  */
+  else
+    {
+      Lisp_Object data;
+
+      data = image_spec_value (img->spec, QCdata, NULL);
+      success_p = svg_load_image (f, img, SDATA (data), SBYTES (data));
+    }
+
+  return success_p;
+}
+
+/* svg_load_image is a helper function for svg_load, which does the actual
+ loading given contents and size, apart from frame and image
+ structures, passed from svg_load.
+
+ Uses librsvg to do most of the image processing.
+ 
+ Returns non-zero when sucessful.  */
+static int
+svg_load_image (f, img, contents, size)
+    /* Pointer to emacs frame sturcture.  */
+     struct frame *f;
+     /* Pointer to emacs image structure.  */
+     struct image *img;
+     /* String containing the SVG XML data to be parsed.  */
+     unsigned char *contents;
+     /* Size of data in bytes.  */
+     unsigned int size;
+{
+  RsvgHandle *rsvg_handle;
+  GError *error = NULL;
+  GdkPixbuf *pixbuf;
+  int width;
+  int height;
+  const guint8 *pixels;
+  int rowstride;
+  XImagePtr ximg;
+  XColor background;
+  int x;
+  int y;
+
+  /* g_type_init is a glib function that must be called prior to using
+     gnome type library functions.  */
+  g_type_init ();
+  /* Make a handle to a new rsvg object.  */
+  rsvg_handle = fn_rsvg_handle_new ();
+
+  /* Parse the contents argument and fill in the rsvg_handle.  */
+  fn_rsvg_handle_write (rsvg_handle, contents, size, &error);
+  if (error)
+    goto rsvg_error;
+
+  /* The parsing is complete, rsvg_handle is ready to used, close it
+     for further writes.  */
+  fn_rsvg_handle_close (rsvg_handle, &error);
+  if (error)
+    goto rsvg_error;
+  /* We can now get a valid pixel buffer from the svg file, if all
+     went ok.  */
+  pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
+  eassert (pixbuf);
+
+  /* Extract some meta data from the svg handle.  */
+  width     = fn_gdk_pixbuf_get_width (pixbuf);
+  height    = fn_gdk_pixbuf_get_height (pixbuf);
+  pixels    = fn_gdk_pixbuf_get_pixels (pixbuf);
+  rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);
+
+  /* Validate the svg meta data.  */
+  eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
+  eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
+  eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
+  eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
+
+  /* Try to create a x pixmap to hold the svg pixmap.  */
+  if (!x_create_x_image_and_pixmap (f, width, height, 0, &ximg, &img->pixmap)) {
+    g_object_unref (pixbuf);
+    return 0;
+  }
+
+  init_color_table ();
+
+  /* TODO: The code is somewhat prepared for other environments than
+     X, but is far from done.  */
+#ifdef HAVE_X_WINDOWS
+
+  background.pixel = FRAME_BACKGROUND_PIXEL (f);
+  x_query_color (f, &background);
+
+  /* SVG pixmaps specify transparency in the last byte, so right shift
+     8 bits to get rid of it, since emacs doesnt support
+     transparency.  */
+  background.red   >>= 8;
+  background.green >>= 8;
+  background.blue  >>= 8;
+
+#else /* not HAVE_X_WINDOWS */
+#error FIXME
+#endif
+
+  /* This loop handles opacity values, since Emacs assumes
+     non-transparent images.  Each pixel must be "flattened" by
+     calculating he resulting color, given the transparency of the
+     pixel, and the image background color.   */
+  for (y = 0; y < height; ++y)
+    {
+      for (x = 0; x < width; ++x)
+	{
+	  unsigned red;
+	  unsigned green;
+	  unsigned blue;
+	  unsigned opacity;
+
+	  red     = *pixels++;
+	  green   = *pixels++;
+	  blue    = *pixels++;
+	  opacity = *pixels++;
+
+	  red   = ((red * opacity)
+		   + (background.red * ((1 << 8) - opacity)));
+	  green = ((green * opacity)
+		   + (background.green * ((1 << 8) - opacity)));
+	  blue  = ((blue * opacity)
+		   + (background.blue * ((1 << 8) - opacity)));
+
+	  XPutPixel (ximg, x, y, lookup_rgb_color (f, red, green, blue));
+	}
+
+      pixels += rowstride - 4 * width;
+    }
+
+#ifdef COLOR_TABLE_SUPPORT
+  /* Remember colors allocated for this image.  */
+  img->colors = colors_in_color_table (&img->ncolors);
+  free_color_table ();
+#endif /* COLOR_TABLE_SUPPORT */
+
+  g_object_unref (pixbuf);
+
+  /* Put the image into the pixmap, then free the X image and its
+     buffer.  */
+  x_put_x_image (f, ximg, img->pixmap, width, height);
+  x_destroy_x_image (ximg);
+
+  img->width  = width;
+  img->height = height;
+
+  return 1;
+
+ rsvg_error:
+  /* FIXME: Use error->message so the user knows what is the actual
+     problem with the image.  */
+  image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
+  g_error_free (error);
+  return 0;
+}
+
+#endif	/* defined (HAVE_RSVG) */
+
+
+
 \f
 /***********************************************************************
 				Ghostscript
@@ -8591,6 +8914,11 @@ of `image-library-alist', which see).  *
     return CHECK_LIB_AVAILABLE (&png_type, init_png_functions, libraries);
 #endif
 
+#if defined (HAVE_RSVG)
+  if (EQ (type, Qsvg))
+    return CHECK_LIB_AVAILABLE (&svg_type, init_svg_functions, libraries);
+#endif
+  
 #ifdef HAVE_GHOSTSCRIPT
   if (EQ (type, Qpostscript))
     return CHECK_LIB_AVAILABLE (&gs_type, init_gs_functions, libraries);
@@ -8733,6 +9061,13 @@ non-numeric, there is no explicit limit 
   ADD_IMAGE_TYPE(Qpng);
 #endif
 
+#if defined (HAVE_RSVG)
+  Qsvg = intern ("svg");
+  staticpro (&Qsvg);
+  ADD_IMAGE_TYPE(Qsvg);
+#endif
+
+  
   defsubr (&Sinit_image_library);
   defsubr (&Sclear_image_cache);
   defsubr (&Simage_refresh);

[-- Attachment #3: Type: text/plain, Size: 20 bytes --]



-- 
Joakim Verona

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-20  9:31                     ` joakim
@ 2007-08-21 14:45                       ` Richard Stallman
  2007-08-21 14:59                         ` joakim
  0 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-21 14:45 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

    Ok, heres a new version of the patch, and a NEWS entry that was agreed
    upon earlier. I suppose the committer provides a changelog entry?
    Please remember that Paul Pogonyshev is the author of the patch, I've
    just cleaned it up a bit.

Can you please write the change log entry for it?
It should reflect the authorship, both yours and his.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-21 14:45                       ` Richard Stallman
@ 2007-08-21 14:59                         ` joakim
  2007-08-22  4:12                           ` Glenn Morris
  0 siblings, 1 reply; 106+ messages in thread
From: joakim @ 2007-08-21 14:59 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Ok, heres a new version of the patch, and a NEWS entry that was agreed
>     upon earlier. I suppose the committer provides a changelog entry?
>     Please remember that Paul Pogonyshev is the author of the patch, I've
>     just cleaned it up a bit.
>
> Can you please write the change log entry for it?
> It should reflect the authorship, both yours and his.

Ok, heres my attempt:

2007-08-21  Paul Pogonyshev  <pogonyshev@gmx.net>

	* configure.in, image-file.el, image.el,
        * Makefile.in, image.c: Support the SVG image file
        format through librsvg2. Some additional code somments
        where written by Joakim Verona <joakim@verona.se>.

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-21 14:59                         ` joakim
@ 2007-08-22  4:12                           ` Glenn Morris
  2007-08-22  7:23                             ` joakim
  2007-08-29 16:27                             ` svn icons in the toolbar (was: SVG support(again) ?) Leo
  0 siblings, 2 replies; 106+ messages in thread
From: Glenn Morris @ 2007-08-22  4:12 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel


Thanks for this, I installed it. Let me know if I missed anything.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: SVG support(again) ?
  2007-08-22  4:12                           ` Glenn Morris
@ 2007-08-22  7:23                             ` joakim
  2007-08-29 16:27                             ` svn icons in the toolbar (was: SVG support(again) ?) Leo
  1 sibling, 0 replies; 106+ messages in thread
From: joakim @ 2007-08-22  7:23 UTC (permalink / raw)
  To: emacs-devel

Glenn Morris <rgm@gnu.org> writes:

> Thanks for this, I installed it. Let me know if I missed anything.

Great! That wasn't so hard. If theres some other low-level patches
needing cleanup before commiting, you can send them to me :)

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* svn icons in the toolbar (was: SVG support(again) ?)
  2007-08-22  4:12                           ` Glenn Morris
  2007-08-22  7:23                             ` joakim
@ 2007-08-29 16:27                             ` Leo
  2007-08-30  5:08                               ` svn icons in the toolbar Jan Djärv
  1 sibling, 1 reply; 106+ messages in thread
From: Leo @ 2007-08-29 16:27 UTC (permalink / raw)
  To: emacs-devel

Hi there,

Is it possible now to make the toolbar support svg or png icons? For png
support There is a patch in article: <1169151517.24488.17.camel@galahad>

Or you can obtain it from the archive:
http://permalink.gmane.org/gmane.emacs.devel/65285

On 2007-08-22 05:12 +0100, Glenn Morris wrote:
> Thanks for this, I installed it. Let me know if I missed anything.

-- 
Leo <sdl.web AT gmail.com>                         (GPG Key: 9283AA3F)

         Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-29 16:27                             ` svn icons in the toolbar (was: SVG support(again) ?) Leo
@ 2007-08-30  5:08                               ` Jan Djärv
  2007-08-30 20:44                                 ` Leo
                                                   ` (2 more replies)
  0 siblings, 3 replies; 106+ messages in thread
From: Jan Djärv @ 2007-08-30  5:08 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> Hi there,
> 
> Is it possible now to make the toolbar support svg or png icons? For png
> support There is a patch in article: <1169151517.24488.17.camel@galahad>

That would be great.  It has been suggested that Emacs should use the new 
Gnome icons (http://people.freedesktop.org/~jimmac/).  It would be so much 
easier if we just could copy the png images.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30  5:08                               ` svn icons in the toolbar Jan Djärv
@ 2007-08-30 20:44                                 ` Leo
  2007-08-31  5:59                                   ` Jan Djärv
  2007-08-31  7:07                                   ` Benjamin Hawkes-Lewis
  2007-08-30 20:50                                 ` Richard Stallman
  2007-09-02  4:32                                 ` Leo
  2 siblings, 2 replies; 106+ messages in thread
From: Leo @ 2007-08-30 20:44 UTC (permalink / raw)
  To: emacs-devel

On 2007-08-30 06:08 +0100, Jan Djärv wrote:
> Leo skrev:
>> Hi there,
>>
>> Is it possible now to make the toolbar support svg or png icons? For png
>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>
> That would be great.  It has been suggested that Emacs should
> use the new Gnome icons
> (http://people.freedesktop.org/~jimmac/).  It would be so much
> easier if we just could copy the png images.
>
> 	Jan D.

Do you think the patch is good?

I have been using it since it was posted, so over 7 months now.

-- 
Leo <sdl.web AT gmail.com>                         (GPG Key: 9283AA3F)

         Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30  5:08                               ` svn icons in the toolbar Jan Djärv
  2007-08-30 20:44                                 ` Leo
@ 2007-08-30 20:50                                 ` Richard Stallman
  2007-09-02  0:33                                   ` Leo
  2007-09-02  4:32                                 ` Leo
  2 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-08-30 20:50 UTC (permalink / raw)
  To: Jan Djärv; +Cc: sdl.web, emacs-devel

    That would be great.  It has been suggested that Emacs should use the new 
    Gnome icons (http://people.freedesktop.org/~jimmac/).  It would be so much 
    easier if we just could copy the png images.

I think that would cause more trouble than it is worth, because not
all systems have development versions of png libraries installed (as I
recently found).

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30 20:44                                 ` Leo
@ 2007-08-31  5:59                                   ` Jan Djärv
  2007-08-31  7:07                                   ` Benjamin Hawkes-Lewis
  1 sibling, 0 replies; 106+ messages in thread
From: Jan Djärv @ 2007-08-31  5:59 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>> Leo skrev:
>>> Hi there,
>>>
>>> Is it possible now to make the toolbar support svg or png icons? For png
>>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>> That would be great.  It has been suggested that Emacs should
>> use the new Gnome icons
>> (http://people.freedesktop.org/~jimmac/).  It would be so much
>> easier if we just could copy the png images.
>>
>> 	Jan D.
> 
> Do you think the patch is good?
> 
> I have been using it since it was posted, so over 7 months now.
>

It looks good.  The comment

  + Currently, the function does not test for XPM support, only PNG.

is not needed AFAIK, xpm support is built in to Emacs without external libraries.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30 20:44                                 ` Leo
  2007-08-31  5:59                                   ` Jan Djärv
@ 2007-08-31  7:07                                   ` Benjamin Hawkes-Lewis
  2007-09-01 13:57                                     ` Leo
  1 sibling, 1 reply; 106+ messages in thread
From: Benjamin Hawkes-Lewis @ 2007-08-31  7:07 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo wrote:
> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
> 
> Do you think the patch is good?
> 
> I have been using it since it was posted, so over 7 months now.

Cool. I'm the patch author. The main problem with my patch is I haven't 
signed the FSF release forms because I lost them and kept imagining 
they'd turn up amongst my other papers. But they haven't resurfaced, and 
if FSF could kindly send me new forms, I will sign and return them, 
especially now that people are actually enjoying the patch. :)

--
Benjamin Hawkes-Lewis

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-31  7:07                                   ` Benjamin Hawkes-Lewis
@ 2007-09-01 13:57                                     ` Leo
  0 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-01 13:57 UTC (permalink / raw)
  To: emacs-devel

On 2007-08-31 08:07 +0100, Benjamin Hawkes-Lewis wrote:
> Leo wrote:
>> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>>
>> Do you think the patch is good?
>>
>> I have been using it since it was posted, so over 7 months now.
>
> Cool. I'm the patch author. The main problem with my patch is I
> haven't signed the FSF release forms because I lost them and
> kept imagining they'd turn up amongst my other papers. But they
> haven't resurfaced, and if FSF could kindly send me new forms, I
> will sign and return them, especially now that people are
> actually enjoying the patch. :)

Does that mean that RMS has already agreed to install the patch?

In that case, can someone tell FSF to send papers to Benjamin?

Thanks,
-- 
Leo <sdl.web AT gmail.com>                         (GPG Key: 9283AA3F)

         Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30 20:50                                 ` Richard Stallman
@ 2007-09-02  0:33                                   ` Leo
  2007-09-03  3:04                                     ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02  0:33 UTC (permalink / raw)
  To: rms; +Cc: Jan Djärv, emacs-devel

On 2007-08-30 21:50 +0100, Richard Stallman wrote:
>     That would be great.  It has been suggested that Emacs should use the new 
>     Gnome icons (http://people.freedesktop.org/~jimmac/).  It would be so much 
>     easier if we just could copy the png images.
>
> I think that would cause more trouble than it is worth, because not
> all systems have development versions of png libraries installed (as I
> recently found).

I don't think there is any trouble here.

It will fall back on xpm icons.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the XEmacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-08-30  5:08                               ` svn icons in the toolbar Jan Djärv
  2007-08-30 20:44                                 ` Leo
  2007-08-30 20:50                                 ` Richard Stallman
@ 2007-09-02  4:32                                 ` Leo
  2007-09-02  8:07                                   ` Benjamin Hawkes-Lewis
  2007-09-02  8:23                                   ` Jan Djärv
  2 siblings, 2 replies; 106+ messages in thread
From: Leo @ 2007-09-02  4:32 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 670 bytes --]

On 2007-08-30 06:08 +0100, Jan Djärv wrote:
> Leo skrev:
>> Hi there,
>>
>> Is it possible now to make the toolbar support svg or png icons? For png
>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>
> That would be great.  It has been suggested that Emacs should use
> the new Gnome icons (http://people.freedesktop.org/~jimmac/).  It
> would be so much easier if we just could copy the png images.
>
> 	Jan D.

It looks like the patch is not needed anymore. I compiled Emacs from CVS
HEAD without any patch, the toolbar was able to display icons from gtk2
theme though there is only diropen falling back on the old xpm. See the
screenshot:


[-- Attachment #2: emacs-mtty.png --]
[-- Type: image/png, Size: 26610 bytes --]

[-- Attachment #3: Type: text/plain, Size: 210 bytes --]


I am not sure whether Emacs using other toolkit might need the patch or
not.

HTH,
-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  4:32                                 ` Leo
@ 2007-09-02  8:07                                   ` Benjamin Hawkes-Lewis
  2007-09-02  9:04                                     ` Jan Djärv
  2007-09-02  8:23                                   ` Jan Djärv
  1 sibling, 1 reply; 106+ messages in thread
From: Benjamin Hawkes-Lewis @ 2007-09-02  8:07 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo wrote:

> It looks like the patch is not needed anymore. I compiled Emacs from CVS
> HEAD without any patch, the toolbar was able to display icons from gtk2
> theme though there is only diropen falling back on the old xpm.

Hmm. I think something very weird is going on there (maybe you haven't 
clean out all traces of the patch from where Emacs looks to compile or 
run?). tool-bar.el from HEAD doesn't look for PNG files:

http://urlx.org/gnu.org/1bd12

--
Benjamin Hawkes-Lewis

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  4:32                                 ` Leo
  2007-09-02  8:07                                   ` Benjamin Hawkes-Lewis
@ 2007-09-02  8:23                                   ` Jan Djärv
  2007-09-02  9:06                                     ` Leo
  1 sibling, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-02  8:23 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo skrev:
> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>> Leo skrev:
>>> Hi there,
>>>
>>> Is it possible now to make the toolbar support svg or png icons? For png
>>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>> That would be great.  It has been suggested that Emacs should use
>> the new Gnome icons (http://people.freedesktop.org/~jimmac/).  It
>> would be so much easier if we just could copy the png images.
>>
>> 	Jan D.
> 
> It looks like the patch is not needed anymore. I compiled Emacs from CVS
> HEAD without any patch, the toolbar was able to display icons from gtk2
> theme though there is only diropen falling back on the old xpm. See the
> screenshot:
> 

It works for the Gtk+ port only.  We now use stock items and Gtk+ does all the
file loading and rendering.  But for other ports (Xt, X11, OSX, W32) only xpm
are used still.  So I think the patch should go in.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  8:07                                   ` Benjamin Hawkes-Lewis
@ 2007-09-02  9:04                                     ` Jan Djärv
  0 siblings, 0 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-02  9:04 UTC (permalink / raw)
  To: Benjamin Hawkes-Lewis; +Cc: Leo, emacs-devel

Benjamin Hawkes-Lewis skrev:
> Leo wrote:
> 
>> It looks like the patch is not needed anymore. I compiled Emacs from CVS
>> HEAD without any patch, the toolbar was able to display icons from gtk2
>> theme though there is only diropen falling back on the old xpm.
> 
> Hmm. I think something very weird is going on there (maybe you haven't
> clean out all traces of the patch from where Emacs looks to compile or
> run?). tool-bar.el from HEAD doesn't look for PNG files:
> 
> http://urlx.org/gnu.org/1bd12
> 

No, but there is a mapping from files to gtk stock items in
lisp/term/x-win.el.  If you compile Emacs for Gtk+, stock items will be used,
and that means PNG files will be loaded by Gtk+ itself.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  8:23                                   ` Jan Djärv
@ 2007-09-02  9:06                                     ` Leo
  2007-09-02 13:29                                       ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02  9:06 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1144 bytes --]

On 2007-09-02 09:23 +0100, Jan Djärv wrote:
> Leo skrev:
>> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>>> Leo skrev:
>>>> Hi there,
>
>>>>
>>>> Is it possible now to make the toolbar support svg or png icons? For png
>>>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>>> That would be great.  It has been suggested that Emacs should use
>>> the new Gnome icons (http://people.freedesktop.org/~jimmac/).  It
>>> would be so much easier if we just could copy the png images.
>>>
>>> 	Jan D.
>> 
>> It looks like the patch is not needed anymore. I compiled Emacs from CVS
>> HEAD without any patch, the toolbar was able to display icons from gtk2
>> theme though there is only diropen falling back on the old xpm. See the
>> screenshot:
>> 
>
> It works for the Gtk+ port only.  We now use stock items and Gtk+ does
> all the file loading and rendering.  But for other ports (Xt, X11,
> OSX, W32) only xpm are used still.  So I think the patch should go in.
>
> 	Jan D.

Thanks for explanation.

However have you noticed the 3rd icon on the tool-bar is still from the
old xpm images. A new one could look like this:


[-- Attachment #2: file-manager.png --]
[-- Type: image/png, Size: 1123 bytes --]

[-- Attachment #3: Type: text/plain, Size: 132 bytes --]


HTH,
-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  9:06                                     ` Leo
@ 2007-09-02 13:29                                       ` Jan Djärv
  2007-09-02 13:52                                         ` Leo
                                                           ` (3 more replies)
  0 siblings, 4 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-02 13:29 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo skrev:
> On 2007-09-02 09:23 +0100, Jan Djärv wrote:
>> Leo skrev:
>>> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>>>> Leo skrev:
>>>>> Hi there,
>>>>> Is it possible now to make the toolbar support svg or png icons? For png
>>>>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>>>> That would be great.  It has been suggested that Emacs should use
>>>> the new Gnome icons (http://people.freedesktop.org/~jimmac/).  It
>>>> would be so much easier if we just could copy the png images.
>>>>
>>>> 	Jan D.
>>> It looks like the patch is not needed anymore. I compiled Emacs from CVS
>>> HEAD without any patch, the toolbar was able to display icons from gtk2
>>> theme though there is only diropen falling back on the old xpm. See the
>>> screenshot:
>>>
>> It works for the Gtk+ port only.  We now use stock items and Gtk+ does
>> all the file loading and rendering.  But for other ports (Xt, X11,
>> OSX, W32) only xpm are used still.  So I think the patch should go in.
>>
>> 	Jan D.
> 
> Thanks for explanation.
> 
> However have you noticed the 3rd icon on the tool-bar is still from the
> old xpm images. A new one could look like this:
> 

Yes, I've noticed.  That is because I found no suitable stock icon for it.
Does the icon you attached have a stock name?  Where is it from?

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 13:29                                       ` Jan Djärv
@ 2007-09-02 13:52                                         ` Leo
  2007-09-02 14:04                                         ` Redundant icon in tool-bar (was: svn icons in the toolbar) Leo
                                                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-02 13:52 UTC (permalink / raw)
  To: Jan Djärv; +Cc: emacs-devel

On 2007-09-02 14:29 +0100, Jan Djärv wrote:
> Leo skrev:
>> On 2007-09-02 09:23 +0100, Jan Djärv wrote:
>>> Leo skrev:
>>>> On 2007-08-30 06:08 +0100, Jan Djärv wrote:
>
>>>>> Leo skrev:
>>>>>> Hi there,
>>>>>> Is it possible now to make the toolbar support svg or png icons? For png
>>>>>> support There is a patch in article: <1169151517.24488.17.camel@galahad>
>>>>> That would be great.  It has been suggested that Emacs should use
>>>>> the new Gnome icons (http://people.freedesktop.org/~jimmac/).  It
>>>>> would be so much easier if we just could copy the png images.
>>>>>
>>>>> 	Jan D.
>>>> It looks like the patch is not needed anymore. I compiled Emacs from CVS
>>>> HEAD without any patch, the toolbar was able to display icons from gtk2
>>>> theme though there is only diropen falling back on the old xpm. See the
>>>> screenshot:
>>>>
>>> It works for the Gtk+ port only.  We now use stock items and Gtk+ does
>>> all the file loading and rendering.  But for other ports (Xt, X11,
>>> OSX, W32) only xpm are used still.  So I think the patch should go in.
>>>
>>> 	Jan D.
>> 
>> Thanks for explanation.
>> 
>> However have you noticed the 3rd icon on the tool-bar is still from the
>> old xpm images. A new one could look like this:
>> 
>
> Yes, I've noticed.  That is because I found no suitable stock icon for it.
> Does the icon you attached have a stock name?  Where is it from?
>
> 	Jan D.

It is in:

/usr/share/icons/gnome/32x32/apps/system-file-manager.png

dired is a file manager, right?

If you really want to use the gtk-stock icon, GTK_STOCK_DIRECTORY can be
a good candidate although I feel it is not as nice as
system-file-manager.png.

HTH,
-- 
Leo

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Redundant icon in tool-bar (was: svn icons in the toolbar)
  2007-09-02 13:29                                       ` Jan Djärv
  2007-09-02 13:52                                         ` Leo
@ 2007-09-02 14:04                                         ` Leo
  2007-09-02 15:39                                           ` Redundant icon in tool-bar Jan Djärv
  2007-09-02 14:09                                         ` svn icons in the toolbar Leo
  2007-09-02 17:46                                         ` svn icons in the toolbar Jan Djärv
  3 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02 14:04 UTC (permalink / raw)
  To: emacs-devel

Dear all,

Today I suddenly found that the first icon and the second icon from the
left are substantially similar in functionality. The third icon is
likely to have a similar icon to the second one (some sort of directory
icon). Thus I think it might be better to remove the second icon from
the tool-bar. It make it look simpler yet doesn't reduce any
functionality.

On 2007-09-02 14:29 +0100, Jan Djärv wrote:
>> However have you noticed the 3rd icon on the tool-bar is still from the
>> old xpm images. A new one could look like this:
>> 
>
> Yes, I've noticed.  That is because I found no suitable stock icon for it.
> Does the icon you attached have a stock name?  Where is it from?

HTH,
-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 13:29                                       ` Jan Djärv
  2007-09-02 13:52                                         ` Leo
  2007-09-02 14:04                                         ` Redundant icon in tool-bar (was: svn icons in the toolbar) Leo
@ 2007-09-02 14:09                                         ` Leo
  2007-09-02 15:43                                           ` Jan Djärv
  2007-09-02 17:46                                         ` svn icons in the toolbar Jan Djärv
  3 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02 14:09 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

On 2007-09-02 14:29 +0100, Jan Djärv wrote:
>> However have you noticed the 3rd icon on the tool-bar is still from the
>> old xpm images. A new one could look like this:
>> 
>
> Yes, I've noticed.  That is because I found no suitable stock icon for it.
> Does the icon you attached have a stock name?  Where is it from?

Have you noticed that the tool-bar in Gnus's article buffer, summary
buffer and message buffer has gone back to using the old-fashioned icons
or missing a couple of icons. See:


[-- Attachment #2: Gnus-sum.png --]
[-- Type: image/png, Size: 20017 bytes --]

[-- Attachment #3: Gnus-msg.png --]
[-- Type: image/png, Size: 38358 bytes --]

[-- Attachment #4: Type: text/plain, Size: 132 bytes --]


HTH,
-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

[-- Attachment #5: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: Redundant icon in tool-bar
  2007-09-02 14:04                                         ` Redundant icon in tool-bar (was: svn icons in the toolbar) Leo
@ 2007-09-02 15:39                                           ` Jan Djärv
  2007-09-02 16:00                                             ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-02 15:39 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo skrev:
> Dear all,
> 
> Today I suddenly found that the first icon and the second icon from the
> left are substantially similar in functionality. The third icon is
> likely to have a similar icon to the second one (some sort of directory
> icon). Thus I think it might be better to remove the second icon from
> the tool-bar. It make it look simpler yet doesn't reduce any
> functionality.

It does not reduce functionality per se, but the file open dialogs look and
behave different.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 14:09                                         ` svn icons in the toolbar Leo
@ 2007-09-02 15:43                                           ` Jan Djärv
  2007-09-02 16:00                                             ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-02 15:43 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo skrev:
> On 2007-09-02 14:29 +0100, Jan Djärv wrote:
>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>> old xpm images. A new one could look like this:
>>>
>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>> Does the icon you attached have a stock name?  Where is it from?
> 
> Have you noticed that the tool-bar in Gnus's article buffer, summary
> buffer and message buffer has gone back to using the old-fashioned icons
> or missing a couple of icons. See:
> 

I don't use Gnus, so no.  However, there was a bug that made icons change, how
old is your Emacs?  Try update from head and try again.

There is no mapping from file names to stock itemns yet, so the old xpm icons
will be used.  It is the same for almost all parts of Emacs (gud, gnus, mail,
...), except info and the main tool bar.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: Redundant icon in tool-bar
  2007-09-02 15:39                                           ` Redundant icon in tool-bar Jan Djärv
@ 2007-09-02 16:00                                             ` Leo
  0 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-02 16:00 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-02 16:39 +0100, Jan Djärv wrote:
>> Today I suddenly found that the first icon and the second icon from the
>> left are substantially similar in functionality. The third icon is
>> likely to have a similar icon to the second one (some sort of directory
>> icon). Thus I think it might be better to remove the second icon from
>> the tool-bar. It make it look simpler yet doesn't reduce any
>> functionality.
>
> It does not reduce functionality per se, but the file open dialogs look and
> behave different.

The second one won't allow to open a non-existent file.

For beginners, the difference is not important or many of them fail to
realize the difference. And once they get used to Emacs, they start
turning tool-bar off anyway.

That the two icons behave substantially similarly creates confusion for
users.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 15:43                                           ` Jan Djärv
@ 2007-09-02 16:00                                             ` Leo
  2007-09-02 17:28                                               ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02 16:00 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-02 16:43 +0100, Jan Djärv wrote:
> I don't use Gnus, so no.  However, there was a bug that made icons change, how
> old is your Emacs?  Try update from head and try again.

GNU Emacs 23.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.10.14, multi-tty) of 2007-09-01

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 16:00                                             ` Leo
@ 2007-09-02 17:28                                               ` Jan Djärv
  2007-09-05 23:53                                                 ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-02 17:28 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Leo skrev:
> On 2007-09-02 16:43 +0100, Jan Djärv wrote:
>> I don't use Gnus, so no.  However, there was a bug that made icons change, how
>> old is your Emacs?  Try update from head and try again.
> 
> GNU Emacs 23.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.10.14, multi-tty) of 2007-09-01
> 

I can't repeat it.  Are you sure you have a clean install with all icon files
present?  Can you give a case starting from emacs -Q where this occurs?

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 13:29                                       ` Jan Djärv
                                                           ` (2 preceding siblings ...)
  2007-09-02 14:09                                         ` svn icons in the toolbar Leo
@ 2007-09-02 17:46                                         ` Jan Djärv
  2007-09-02 17:58                                           ` Leo
  2007-09-18 21:55                                           ` Stephen Berman
  3 siblings, 2 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-02 17:46 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Jan Djärv skrev:
> Leo skrev:

>>
>> However have you noticed the 3rd icon on the tool-bar is still from the
>> old xpm images. A new one could look like this:
>>
> 
> Yes, I've noticed.  That is because I found no suitable stock icon for it.
> Does the icon you attached have a stock name?  Where is it from?
> 

I think it is the named icon system-file-manager.  I added that one.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 17:46                                         ` svn icons in the toolbar Jan Djärv
@ 2007-09-02 17:58                                           ` Leo
  2007-09-21 10:24                                             ` Leo
  2007-09-18 21:55                                           ` Stephen Berman
  1 sibling, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-02 17:58 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-02 18:46 +0100, Jan Djärv wrote:
> Jan Djärv skrev:
>> Leo skrev:
>
>>>
>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>> old xpm images. A new one could look like this:
>>>
>> 
>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>> Does the icon you attached have a stock name?  Where is it from?
>> 
>
> I think it is the named icon system-file-manager.  I added that one.
>
> 	Jan D.

The main tool-bar now looks beautiful. However the info tool-bar need
some love. I will come back to this later.

Thanks,
-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02  0:33                                   ` Leo
@ 2007-09-03  3:04                                     ` Richard Stallman
  2007-09-03  6:26                                       ` Jan Djärv
                                                         ` (2 more replies)
  0 siblings, 3 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-03  3:04 UTC (permalink / raw)
  To: Leo; +Cc: jan.h.d, emacs-devel

    > I think that would cause more trouble than it is worth, because not
    > all systems have development versions of png libraries installed (as I
    > recently found).

    I don't think there is any trouble here.

    It will fall back on xpm icons.

If they are good enough, why not simply use them always?
Why use other formats at all?

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  3:04                                     ` Richard Stallman
@ 2007-09-03  6:26                                       ` Jan Djärv
  2007-09-04  0:56                                         ` Richard Stallman
  2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
  2007-09-03  7:54                                       ` Leo
  2 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-03  6:26 UTC (permalink / raw)
  To: rms; +Cc: Leo, emacs-devel



Richard Stallman skrev:
>     > I think that would cause more trouble than it is worth, because not
>     > all systems have development versions of png libraries installed (as I
>     > recently found).
> 
>     I don't think there is any trouble here.
> 
>     It will fall back on xpm icons.
> 
> If they are good enough, why not simply use them always?
> Why use other formats at all?
> 

If you want to try out or replace Emacs icons with something else, it is 
easier to just copy png icons to etc/images, or set image-load-path to a 
directory with png icons (png seems to be the most used format for Gnome and 
KDE), than to first convert them to xpm.  Also, I think xpm had some issues 
with transparency, but that may have been solved now.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  3:04                                     ` Richard Stallman
  2007-09-03  6:26                                       ` Jan Djärv
@ 2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
  2007-09-03  7:53                                         ` joakim
  2007-09-04  0:56                                         ` Richard Stallman
  2007-09-03  7:54                                       ` Leo
  2 siblings, 2 replies; 106+ messages in thread
From: Benjamin Hawkes-Lewis @ 2007-09-03  7:08 UTC (permalink / raw)
  To: rms; +Cc: jan.h.d, Leo, emacs-devel

Richard Stallman wrote:

>     I don't think there is any trouble here.
> 
>     It will fall back on xpm icons.
> 
> If they are good enough, why not simply use them always?
> Why use other formats at all?

Well, "fall back" tends to imply "not as good".

Aesthetically, the XPM icons may be serviceable for a fallback but they 
aren't "good enough" when the other programs on your desktop are using 
PNG or SVG icons. That's why I was motivated to write my patch in the 
first place. ;)

--
Benjamin Hawkes-Lewis

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
@ 2007-09-03  7:53                                         ` joakim
  2007-09-03  7:55                                           ` Leo
  2007-09-03 17:38                                           ` David Reitter
  2007-09-04  0:56                                         ` Richard Stallman
  1 sibling, 2 replies; 106+ messages in thread
From: joakim @ 2007-09-03  7:53 UTC (permalink / raw)
  To: emacs-devel

Benjamin Hawkes-Lewis <bhawkeslewis@googlemail.com> writes:

> Richard Stallman wrote:
>
>>     I don't think there is any trouble here.
>>
>>     It will fall back on xpm icons.
>>
>> If they are good enough, why not simply use them always?
>> Why use other formats at all?
>
> Well, "fall back" tends to imply "not as good".
>
> Aesthetically, the XPM icons may be serviceable for a fallback but
> they aren't "good enough" when the other programs on your desktop are
> using PNG or SVG icons. That's why I was motivated to write my patch
> in the first place. ;)

Disclaimer: I always disable the toolbar.

That said, I also wonder why converting png:s to xpm wouldnt be
equivalent. Does the png library handle alpha channels and
anti-aliasing to the background conveniently, which the xpm library
presumably doesnt? Or what is the technical cause for xpm:s visual
inferiority?

I can understand that SVG:s are superior when scaling of course.

>
> --
> Benjamin Hawkes-Lewis

-- 
Joakim Verona

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  3:04                                     ` Richard Stallman
  2007-09-03  6:26                                       ` Jan Djärv
  2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
@ 2007-09-03  7:54                                       ` Leo
  2 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-03  7:54 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-03 04:04 +0100, Richard Stallman wrote:
>     > I think that would cause more trouble than it is worth, because not
>     > all systems have development versions of png libraries installed (as I
>     > recently found).
>
>     I don't think there is any trouble here.
>
>     It will fall back on xpm icons.
>
> If they are good enough, why not simply use them always?
> Why use other formats at all?

They are good enough for some people and some systems. But Emacs looks
much better with png icons, as it's superior to xpm.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  7:53                                         ` joakim
@ 2007-09-03  7:55                                           ` Leo
  2007-09-03 17:38                                           ` David Reitter
  1 sibling, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-03  7:55 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-03 08:53 +0100, joakim@verona.se wrote:
> Does the png library handle alpha channels and
> anti-aliasing to the background conveniently

You said it.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  7:53                                         ` joakim
  2007-09-03  7:55                                           ` Leo
@ 2007-09-03 17:38                                           ` David Reitter
  1 sibling, 0 replies; 106+ messages in thread
From: David Reitter @ 2007-09-03 17:38 UTC (permalink / raw)
  To: joakim; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1304 bytes --]

On 3 Sep 2007, at 08:53, joakim@verona.se wrote:

> That said, I also wonder why converting png:s to xpm wouldnt be
> equivalent. Does the png library handle alpha channels and
> anti-aliasing to the background conveniently, which the xpm library
> presumably doesnt?

Correct.

For Aquamacs, I convert PNGs into XPMs with a pre-defined background  
color (matte), which is used in lieu of alpha blending. This works  
fine until the user changes the background color of the toolbar. A  
screenshot of the toolbar with some icons enabled is attached.

I tried using PNGs for the toolbar, and I wrote a patch to support  
that (see below, don't know if it still applies cleanly).

However, there always was a problem with the specification of  
selected / disabled states of the icons, which somehow didn't work  
correctly for PNGs at least in the Carbon port (IIRC - this is more  
than a year ago).

It would be very nice if PNGs worked, and if selected and disabled  
states were fully supported.

Alternatively, the IMHO much better solution would be to support  
toolkit toolbars, because that'll give users all the functionality of  
the toolkit (native look, best quality images, in some cases  
drag&drop / reordering). A fallback to XPM is always possible, of  
course, in non-toolkit builds.



[-- Attachment #2: pastedGraphic.png --]
[-- Type: image/png, Size: 28016 bytes --]

[-- Attachment #3: pastedGraphic.png --]
[-- Type: image/png, Size: 96682 bytes --]

[-- Attachment #4: Type: text/plain, Size: 7640 bytes --]

Index: lisp/tool-bar.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/tool-bar.el,v
retrieving revision 1.5
diff -c -r1.5 tool-bar.el
*** lisp/tool-bar.el	6 Feb 2006 14:33:35 -0000	1.5
--- lisp/tool-bar.el	2 May 2006 11:18:01 -0000
***************
*** 90,95 ****
--- 90,166 ----
   		'(menu-item "tool bar" ignore
   			    :filter (lambda (ignore) tool-bar-map)))

+ (defun tool-bar-set-file-extension (image-spec-list extension)
+   "Set new file extensions for all :file properties
+ Replace any extensions of :file properties in elements of
+ IMAGE-SPEC-LIST. An extension may start with a period . or an
+ underscore. EXTENSION and the original file name extension (starting
+ with a period) are added to the file name.
+
+ E.g. foo_dis.xpm becomes foo_sel.xpm if EXTENSION is '_sel'."
+   (mapcar
+    (lambda (spec)
+      (let ((f (plist-get spec :file))
+ 	    )
+         (if (null f)
+ 	    spec
+ 	  ;; need to replace previous extensions, including those
+ 	  ;; starting with _ -
+ 	  (plist-put spec :file (concat (replace-regexp-in-string "[\.\_].*$"
+ 								  "" f)
+ 					extension
+ 					(file-name-extension f t)))
+ 	  )))
+    image-spec-list))
+
+ ;; (cdr (tool-bar-get-image-spec "new"))
+ (defun tool-bar-get-image-spec (icon)
+   (let* ((fg (face-attribute 'tool-bar :foreground))
+ 	 (bg (face-attribute 'tool-bar :background))
+ 	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
+ 			(if (eq bg 'unspecified) nil (list :background bg))))
+ 	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
+ 	 (xpm-lo-spec (if (> (display-color-cells) 256)
+ 			  nil
+ 			(list :type 'xpm :file
+                               (concat "low-color/" icon ".xpm"))))
+ 	 (png-spec (list :type 'png
+ 			   :file (concat icon ".png")) )
+ 	 (pbm-spec (append (list :type 'pbm :file
+                                  (concat icon ".pbm")) colors))
+ 	 (xbm-spec (append (list :type 'xbm :file
+                                  (concat icon ".xbm")) colors))
+ 	 (image (find-image
+ 		(if (display-color-p)
+ 		    (list png-spec xpm-lo-spec xpm-spec pbm-spec xbm-spec)
+ 		  (list pbm-spec xbm-spec xpm-lo-spec xpm-spec))))
+ 	 (image-sel (find-image
+ 		     (if (display-color-p)
+ 			 (tool-bar-set-file-extension
+ 			  (list png-spec xpm-lo-spec xpm-spec pbm-spec xbm-spec)
+ 			  "_sel")
+ 		       nil)))
+ 	 (image-dis (find-image
+ 		     (if (display-color-p)
+ 			 (tool-bar-set-file-extension
+ 			  (list png-spec xpm-lo-spec xpm-spec pbm-spec xbm-spec)
+ 			  "_dis")
+ 		       nil)))
+ 	 (images (when image ;; image may be nil if not found.
+ 		   (unless (image-mask-p image)
+ 		     (setq image (append image '(:mask heuristic))))
+ 		   (if (and image-sel image-dis)
+ 		       (progn		
+ 			 (unless (image-mask-p image-sel)
+ 			   (setq image-sel (append image-sel
+ 						   '(:mask heuristic))))
+ 			 (unless (image-mask-p image-dis)
+ 			   (setq image-dis (append image-dis
+ 						   '(:mask heuristic))))
+ 			 (vector image-sel image image-dis image-dis))
+ 		     image))))
+     (cons image images)))
+
   ;;;###autoload
   (defun tool-bar-add-item (icon def key &rest props)
     "Add an item to the tool bar.
***************
*** 119,147 ****
   function will first try to use low-color/ICON.xpm if display-color- 
cells
   is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
   ICON.xbm, using `find-image'."
!   (let* ((fg (face-attribute 'tool-bar :foreground))
! 	 (bg (face-attribute 'tool-bar :background))
! 	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
! 			(if (eq bg 'unspecified) nil (list :background bg))))
! 	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
! 	 (xpm-lo-spec (if (> (display-color-cells) 256)
! 			  nil
! 			(list :type 'xpm :file
!                               (concat "low-color/" icon ".xpm"))))
! 	 (pbm-spec (append (list :type 'pbm :file
!                                  (concat icon ".pbm")) colors))
! 	 (xbm-spec (append (list :type 'xbm :file
!                                  (concat icon ".xbm")) colors))
! 	 (image (find-image
! 		(if (display-color-p)
! 		    (list xpm-lo-spec xpm-spec pbm-spec xbm-spec)
! 		  (list pbm-spec xbm-spec xpm-lo-spec xpm-spec)))))

       (when (and (display-images-p) image)
!       (unless (image-mask-p image)
! 	(setq image (append image '(:mask heuristic))))
         (define-key-after map (vector key)
! 	`(menu-item ,(symbol-name key) ,def :image ,image ,@props)))))

   ;;;###autoload
   (defun tool-bar-add-item-from-menu (command icon &optional map  
&rest props)
--- 190,203 ----
   function will first try to use low-color/ICON.xpm if display-color- 
cells
   is less or equal to 256, then ICON.xpm, then ICON.pbm, and finally
   ICON.xbm, using `find-image'."
!   (let* ((is (tool-bar-get-image-spec icon))
! 	 (image (car is))
! 	 (images (cdr is)))

       (when (and (display-images-p) image)
!
         (define-key-after map (vector key)
! 	`(menu-item ,(symbol-name key) ,def :image ,images ,@props)))))

   ;;;###autoload
   (defun tool-bar-add-item-from-menu (command icon &optional map  
&rest props)
***************
*** 174,196 ****
       (setq from-map global-map))
     (let* ((menu-bar-map (lookup-key from-map [menu-bar]))
   	 (keys (where-is-internal command menu-bar-map))
! 	 (fg (face-attribute 'tool-bar :foreground))
! 	 (bg (face-attribute 'tool-bar :background))
! 	 (colors (nconc (if (eq fg 'unspecified) nil (list :foreground fg))
! 			(if (eq bg 'unspecified) nil (list :background bg))))
! 	 (xpm-spec (list :type 'xpm :file (concat icon ".xpm")))
! 	 (xpm-lo-spec (if (> (display-color-cells) 256)
! 			  nil
! 			(list :type 'xpm :file
!                               (concat "low-color/" icon ".xpm"))))
! 	 (pbm-spec (append (list :type 'pbm :file
!                                  (concat icon ".pbm")) colors))
! 	 (xbm-spec (append (list :type 'xbm :file
!                                  (concat icon ".xbm")) colors))
! 	 (spec (if (display-color-p)
! 		   (list xpm-lo-spec xpm-spec pbm-spec xbm-spec)
! 		 (list pbm-spec xbm-spec xpm-lo-spec xpm-spec)))
! 	 (image (find-image spec))
   	 submap key)
       (when (and (display-images-p) image)
         ;; We'll pick up the last valid entry in the list of keys if
--- 230,238 ----
       (setq from-map global-map))
     (let* ((menu-bar-map (lookup-key from-map [menu-bar]))
   	 (keys (where-is-internal command menu-bar-map))
! 	 (is (tool-bar-get-image-spec icon))
! 	 (image (car is))
! 	 (images (cdr is))
   	 submap key)
       (when (and (display-images-p) image)
         ;; We'll pick up the last valid entry in the list of keys if
***************
*** 210,221 ****
   			key kk)))))
         (when (and (symbolp submap) (boundp submap))
   	(setq submap (eval submap)))
-       (unless (image-mask-p image)
- 	(setq image (append image '(:mask heuristic))))
         (let ((defn (assq key (cdr submap))))
   	(if (eq (cadr defn) 'menu-item)
   	    (define-key-after in-map (vector key)
! 	      (append (cdr defn) (list :image image) props))
   	  (setq defn (cdr defn))
   	  (define-key-after in-map (vector key)
   	    (let ((rest (cdr defn)))
--- 252,261 ----
   			key kk)))))
         (when (and (symbolp submap) (boundp submap))
   	(setq submap (eval submap)))
         (let ((defn (assq key (cdr submap))))
   	(if (eq (cadr defn) 'menu-item)
   	    (define-key-after in-map (vector key)
! 	      (append (cdr defn) (list :image images) props))
   	  (setq defn (cdr defn))
   	  (define-key-after in-map (vector key)
   	    (let ((rest (cdr defn)))


[-- Attachment #5: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  6:26                                       ` Jan Djärv
@ 2007-09-04  0:56                                         ` Richard Stallman
  0 siblings, 0 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-04  0:56 UTC (permalink / raw)
  To: Jan Djärv; +Cc: sdl.web, emacs-devel

    If you want to try out or replace Emacs icons with something else, it is 
    easier to just copy png icons to etc/images, or set image-load-path to a 
    directory with png icons (png seems to be the most used format for Gnome and 
    KDE), than to first convert them to xpm.

That is an argument in favor of supporting other image formats
for icons.  I agree, it is good to support that, when the other
image formats are supported in general.

But I thought someone was arguing for switching to a different format
for the standard Emacs icons.  That's what I don't see a reason for.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
  2007-09-03  7:53                                         ` joakim
@ 2007-09-04  0:56                                         ` Richard Stallman
  2007-09-04  4:01                                           ` tomas
  2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
  1 sibling, 2 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-04  0:56 UTC (permalink / raw)
  To: Benjamin Hawkes-Lewis; +Cc: jan.h.d, sdl.web, emacs-devel

    Aesthetically, the XPM icons may be serviceable for a fallback but they 
    aren't "good enough" when the other programs on your desktop are using 
    PNG or SVG icons.

Why do you think XPM icons are not good enough?
What is better about the PNG or SVG icons?

Joakim wrote:

    I can understand that SVG:s are superior when scaling of course.

Does Emacs do scaling of toolbar icons?
If so, when, and why is it important?

Leo wrote:

    > Does the png library handle alpha channels and
    > anti-aliasing to the background conveniently

    You said it.

I don't understand this -- what are "alpha channels"?  Maybe I
understand "anti-aliasing to the background", but the background for
the toolbar is trivial, right?

Can someone explain what different this makes
_for the toolbar_, and when and why?

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04  0:56                                         ` Richard Stallman
@ 2007-09-04  4:01                                           ` tomas
  2007-09-04 22:57                                             ` Richard Stallman
  2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
  1 sibling, 1 reply; 106+ messages in thread
From: tomas @ 2007-09-04  4:01 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Benjamin Hawkes-Lewis, sdl.web, jan.h.d, emacs-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Mon, Sep 03, 2007 at 08:56:51PM -0400, Richard Stallman wrote:
>     Aesthetically, the XPM icons may be serviceable for a fallback but they 
>     aren't "good enough" when the other programs on your desktop are using 
>     PNG or SVG icons.
> 
> Why do you think XPM icons are not good enough?
> What is better about the PNG or SVG icons?

PNG: mainly alpha channel. Basically a "fourth" colour carrying
transparency information (in PNG with the same resolution as the other
three colour channels, what means that the image can be more-or-less
transparent at each pixel).

SVG: scaling. You don't have to support one set of icons for each
resolution. That said, I haven't managed to like the SVG icons offered
by the usual desktop environments. I use PNGs whenever possible :-/

> Does Emacs do scaling of toolbar icons?
> If so, when, and why is it important?

Since screen resolutions and user preferences vary quite a bit, there is
a need to support different "sized" (meaning the pixel size) icon sets.
Or just provide scalable icons and let the rendering engine do that
dynamically.

[...]

> I don't understand this -- what are "alpha channels"?  Maybe I
> understand "anti-aliasing to the background", but the background for
> the toolbar is trivial, right?

Right. There must be code in place to do that (on every theme change).

Regards
- -- tomás
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFG3Ni1Bcgs9XrR2kYRAsbuAJ0b0OBnsebLEeZwJrsxeIXVmB4DIQCcCUwa
C8MdkSWgd5OTe8q1J4ys3+k=
=7TKb
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04  0:56                                         ` Richard Stallman
  2007-09-04  4:01                                           ` tomas
@ 2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
  2007-09-04  6:06                                             ` David Kastrup
  2007-09-04 22:57                                             ` Richard Stallman
  1 sibling, 2 replies; 106+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-09-04  4:54 UTC (permalink / raw)
  To: rms; +Cc: Benjamin Hawkes-Lewis, sdl.web, jan.h.d, emacs-devel

>>>>> On Mon, 03 Sep 2007 20:56:51 -0400, Richard Stallman <rms@gnu.org> said:

> I don't understand this -- what are "alpha channels"?  Maybe I
> understand "anti-aliasing to the background", but the background for
> the toolbar is trivial, right?

FWIW, the tool-bar background is not necessarily a solid color if XPM
icons are used on non-GTK+ X11 builds.

(set-face-attribute 'tool-bar nil :stipple "hlines3" :foreground "gray85")

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
@ 2007-09-04  6:06                                             ` David Kastrup
  2007-09-04 22:57                                             ` Richard Stallman
  1 sibling, 0 replies; 106+ messages in thread
From: David Kastrup @ 2007-09-04  6:06 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu
  Cc: Benjamin Hawkes-Lewis, emacs-devel, rms, jan.h.d, sdl.web

YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> writes:

>>>>>> On Mon, 03 Sep 2007 20:56:51 -0400, Richard Stallman <rms@gnu.org> said:
>
>> I don't understand this -- what are "alpha channels"?  Maybe I
>> understand "anti-aliasing to the background", but the background for
>> the toolbar is trivial, right?
>
> FWIW, the tool-bar background is not necessarily a solid color if XPM
> icons are used on non-GTK+ X11 builds.
>
> (set-face-attribute 'tool-bar nil :stipple "hlines3" :foreground "gray85")

Even when the background _is_ a solid color, the icon artwork of GNOME
and friends is rendered with subpixel resolution: that means that for
border pixels, a non-integral amount of background shines through.  If
the exact background is not known at the time an icon is made into a
graphics file, being restricted to transparency values of 0% and 100%
means that one either gets jagged edges or colored fringes around them
when displaying them.

For example, a blue icon rendered on red background will have border
pixels somewhere in the region between red and blue, depending on how
much of the background of a pixel gets covered.  Display this
magentaish color on a green background, and you have a magenta tinge
between the blue and red areas.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04  4:01                                           ` tomas
@ 2007-09-04 22:57                                             ` Richard Stallman
  2007-09-05  3:31                                               ` tomas
  0 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-09-04 22:57 UTC (permalink / raw)
  To: tomas; +Cc: bhawkeslewis, sdl.web, jan.h.d, emacs-devel

    PNG: mainly alpha channel. Basically a "fourth" colour carrying
    transparency information (in PNG with the same resolution as the other
    three colour channels, what means that the image can be more-or-less
    transparent at each pixel).

Thanks.  I know what transparency means; I did not recognize "alpha
channel" as a term for it.  (I usually do not know the latest jargon
terms for everything.)

    > Does Emacs do scaling of toolbar icons?
    > If so, when, and why is it important?

    Since screen resolutions and user preferences vary quite a bit, there is
    a need to support different "sized" (meaning the pixel size) icon sets.

Does Emacs need to scale its toolbar icons?

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
  2007-09-04  6:06                                             ` David Kastrup
@ 2007-09-04 22:57                                             ` Richard Stallman
  2007-09-05  0:20                                               ` YAMAMOTO Mitsuharu
  1 sibling, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-09-04 22:57 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: bhawkeslewis, sdl.web, jan.h.d, emacs-devel

    FWIW, the tool-bar background is not necessarily a solid color if XPM
    icons are used on non-GTK+ X11 builds.

    (set-face-attribute 'tool-bar nil :stipple "hlines3" :foreground "gray85")

Ok, I see the advantage of PNG icons.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04 22:57                                             ` Richard Stallman
@ 2007-09-05  0:20                                               ` YAMAMOTO Mitsuharu
  2007-09-05 20:02                                                 ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: YAMAMOTO Mitsuharu @ 2007-09-05  0:20 UTC (permalink / raw)
  To: rms; +Cc: bhawkeslewis, sdl.web, jan.h.d, emacs-devel

>>>>> On Tue, 04 Sep 2007 18:57:42 -0400, Richard Stallman <rms@gnu.org> said:

>     FWIW, the tool-bar background is not necessarily a solid color if XPM
>     icons are used on non-GTK+ X11 builds.

>     (set-face-attribute 'tool-bar nil :stipple "hlines3" :foreground "gray85")

> Ok, I see the advantage of PNG icons.

Ah, I didn't mean that.

Strictly speaking, PNG/SVG alpha support in Emacs is limited in the
sense that it works properly only if the background is a solid color
and the color is explicitly specified in the image spec.  The above
example shows the case where the conditions do not hold.

				     YAMAMOTO Mitsuharu
				mituharu@math.s.chiba-u.ac.jp

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-04 22:57                                             ` Richard Stallman
@ 2007-09-05  3:31                                               ` tomas
  0 siblings, 0 replies; 106+ messages in thread
From: tomas @ 2007-09-05  3:31 UTC (permalink / raw)
  To: Richard Stallman; +Cc: tomas, bhawkeslewis, sdl.web, jan.h.d, emacs-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On Tue, Sep 04, 2007 at 06:57:38PM -0400, Richard Stallman wrote:
>     PNG: mainly alpha channel [...]
> 
> Thanks.  I know what transparency means; I did not recognize "alpha
> channel" as a term for it.  (I usually do not know the latest jargon
> terms for everything.)

That's funny. In my group, I'm usually the old-fashioned guy playing
this role :-)

>     > Does Emacs do scaling of toolbar icons?
>     > If so, when, and why is it important?
> 
>     Since screen resolutions and user preferences vary quite a bit, there is
>     a need to support different "sized" (meaning the pixel size) icon sets.
> 
> Does Emacs need to scale its toolbar icons?

Hm. I don't know. If you ask me personally, I'd say no, thank you very
much. OTOH I do understand the "desktop folks" trying to achieve an
uniform (and themeable) look across all applications. Under this
premise, Emacs would have to use whatever icon set is provided by the
desktop theme, which nowadays is becoming more and more a scalable one.

Sorry for not giving a clear-cut answer.

Regards
- -- tomás
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)

iD8DBQFG3iMLBcgs9XrR2kYRAt+GAJ0YpAimv7IE0OtFGjPSFnKyPZUwqwCfd9mO
QXtHSmkwo/HR+4GcTqP9lRI=
=O9fI
-----END PGP SIGNATURE-----

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-05  0:20                                               ` YAMAMOTO Mitsuharu
@ 2007-09-05 20:02                                                 ` Richard Stallman
  2007-09-05 20:40                                                   ` Chong Yidong
                                                                     ` (2 more replies)
  0 siblings, 3 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-05 20:02 UTC (permalink / raw)
  To: YAMAMOTO Mitsuharu; +Cc: bhawkeslewis, sdl.web, jan.h.d, emacs-devel

It makes sense for Emacs to support using icons from a theme when a
theme provides one.  I'm in favor of supporting the display of PNG and
SVG icons in the tool bar.

Is someone proposing that we replace the icons in Emacs?  If so, why?
When themes provide their own icons, the icons in Emacs are not used
anyway.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-05 20:02                                                 ` Richard Stallman
@ 2007-09-05 20:40                                                   ` Chong Yidong
  2007-09-05 22:54                                                   ` Leo
  2007-09-06  6:00                                                   ` Jan Djärv
  2 siblings, 0 replies; 106+ messages in thread
From: Chong Yidong @ 2007-09-05 20:40 UTC (permalink / raw)
  To: rms; +Cc: jan.h.d, bhawkeslewis, sdl.web, YAMAMOTO Mitsuharu, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> It makes sense for Emacs to support using icons from a theme when a
> theme provides one.  I'm in favor of supporting the display of PNG and
> SVG icons in the tool bar.
>
> Is someone proposing that we replace the icons in Emacs?  If so, why?
> When themes provide their own icons, the icons in Emacs are not used
> anyway.

Png and svn icons look better than the xpm icons we are currently
using.  When you use other applications (e.g. Gnome applications) side
by side with Emacs, Emacs looks significantly frumpier.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-05 20:02                                                 ` Richard Stallman
  2007-09-05 20:40                                                   ` Chong Yidong
@ 2007-09-05 22:54                                                   ` Leo
  2007-09-06  6:02                                                     ` Jan Djärv
  2007-09-06  6:00                                                   ` Jan Djärv
  2 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-05 22:54 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-05 21:02 +0100, Richard Stallman wrote:
> Is someone proposing that we replace the icons in Emacs?  If so, why?
> When themes provide their own icons, the icons in Emacs are not used
> anyway.

I think the reason is that only gtk toolkit knows how to use icons in a
gnome icon theme. Is this correct, Jan?

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 17:28                                               ` Jan Djärv
@ 2007-09-05 23:53                                                 ` Leo
  2007-09-26 20:11                                                   ` gmm-tool-bar-style (was: svn icons in the toolbar) Reiner Steib
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-05 23:53 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-02 18:28 +0100, Jan Djärv wrote:
>> GNU Emacs 23.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.10.14,
>> multi-tty) of 2007-09-01
>
> I can't repeat it.  Are you sure you have a clean install with all
> icon files present?  Can you give a case starting from emacs -Q where
> this occurs?

Sorry for the delay.

My Emacs was installed from a fresh CVS check out on the first build
which you can see from 23.0.50.1.

Toobar and menubar are initially disabled.
Emacs.menuBar: 0
Emacs.toolBar: 0

Turn on tool-bar-mode and switch to gnus buffers and you can see the
weird tool-bar shown up.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-05 20:02                                                 ` Richard Stallman
  2007-09-05 20:40                                                   ` Chong Yidong
  2007-09-05 22:54                                                   ` Leo
@ 2007-09-06  6:00                                                   ` Jan Djärv
  2007-09-07  6:32                                                     ` Richard Stallman
  2 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-06  6:00 UTC (permalink / raw)
  To: rms; +Cc: bhawkeslewis, sdl.web, YAMAMOTO Mitsuharu, emacs-devel



Richard Stallman skrev:
> It makes sense for Emacs to support using icons from a theme when a
> theme provides one.  I'm in favor of supporting the display of PNG and
> SVG icons in the tool bar.
> 
> Is someone proposing that we replace the icons in Emacs?  If so, why?

Emacs have uses Gnome tool bar icons, and now Gnome has moved forward with new 
icons.

> When themes provide their own icons, the icons in Emacs are not used
> anyway.

That only applies to the Gtk+ build.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-05 22:54                                                   ` Leo
@ 2007-09-06  6:02                                                     ` Jan Djärv
  0 siblings, 0 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-06  6:02 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-05 21:02 +0100, Richard Stallman wrote:
>> Is someone proposing that we replace the icons in Emacs?  If so, why?
>> When themes provide their own icons, the icons in Emacs are not used
>> anyway.
> 
> I think the reason is that only gtk toolkit knows how to use icons in a
> gnome icon theme. Is this correct, Jan?

Yes.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-06  6:00                                                   ` Jan Djärv
@ 2007-09-07  6:32                                                     ` Richard Stallman
  2007-09-07  7:04                                                       ` Leo
  2007-09-07  7:10                                                       ` Jan Djärv
  0 siblings, 2 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-07  6:32 UTC (permalink / raw)
  To: Jan Djärv; +Cc: bhawkeslewis, sdl.web, mituharu, emacs-devel

    > Is someone proposing that we replace the icons in Emacs?  If so, why?

    Emacs have uses Gnome tool bar icons, and now Gnome has moved forward with new 
    icons.

It is so frustrating to deal with replacing icons so often.  Let's put
this off until we are about to pretest Emacs 23.  By then, they will
probably have different icons.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  6:32                                                     ` Richard Stallman
@ 2007-09-07  7:04                                                       ` Leo
  2007-09-07  8:12                                                         ` Jan Djärv
  2007-09-08  7:01                                                         ` Richard Stallman
  2007-09-07  7:10                                                       ` Jan Djärv
  1 sibling, 2 replies; 106+ messages in thread
From: Leo @ 2007-09-07  7:04 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-07 07:32 +0100, Richard Stallman wrote:
> It is so frustrating to deal with replacing icons so often.  Let's put
> this off until we are about to pretest Emacs 23.  By then, they will
> probably have different icons.

If we have png support for toolbar, we can write a simple script to
update icons.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  6:32                                                     ` Richard Stallman
  2007-09-07  7:04                                                       ` Leo
@ 2007-09-07  7:10                                                       ` Jan Djärv
  2007-09-08  7:00                                                         ` Richard Stallman
  1 sibling, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-07  7:10 UTC (permalink / raw)
  To: rms; +Cc: bhawkeslewis, sdl.web, mituharu, emacs-devel



Richard Stallman skrev:
>     > Is someone proposing that we replace the icons in Emacs?  If so, why?
> 
>     Emacs have uses Gnome tool bar icons, and now Gnome has moved forward with new 
>     icons.
> 
> It is so frustrating to deal with replacing icons so often.  Let's put
> this off until we are about to pretest Emacs 23.

Okay.


>  By then, they will probably have different icons.

:-)


Maybe we should consider implementing using theme icons for other builds as 
well?  But W32, cygwin and OSX would not benefit from that, so maybe not.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  7:04                                                       ` Leo
@ 2007-09-07  8:12                                                         ` Jan Djärv
  2007-09-07 10:22                                                           ` Leo
  2007-09-08  7:01                                                         ` Richard Stallman
  1 sibling, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-07  8:12 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-07 07:32 +0100, Richard Stallman wrote:
>> It is so frustrating to deal with replacing icons so often.  Let's put
>> this off until we are about to pretest Emacs 23.  By then, they will
>> probably have different icons.
> 
> If we have png support for toolbar, we can write a simple script to
> update icons.
> 

No exactly, we still ned B&W and low color versions.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  8:12                                                         ` Jan Djärv
@ 2007-09-07 10:22                                                           ` Leo
  0 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-07 10:22 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-07 09:12 +0100, Jan Djärv wrote:
> No exactly, we still ned B&W and low color versions.

Presumably, those do not need to converted from Gnome icons. Why don't
we just use the old B&W and low color. If people can put up with B&W or
low color, they probably wouldn't even care.

-- 
Leo <sdl.web AT gmail.com>                (GPG Key: 9283AA3F)

      Gnus is one component of the Emacs operating system.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  7:10                                                       ` Jan Djärv
@ 2007-09-08  7:00                                                         ` Richard Stallman
  0 siblings, 0 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-08  7:00 UTC (permalink / raw)
  To: Jan Djärv; +Cc: bhawkeslewis, sdl.web, mituharu, emacs-devel

    Maybe we should consider implementing using theme icons for other builds as 
    well?

That would be a good feature, so please do implement it if you want
to.

      But W32, cygwin and OSX would not benefit from that,

GNU and GNU/Linux are the most important platforms.
If the feature is useful for them, that's enough reason to add it.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-07  7:04                                                       ` Leo
  2007-09-07  8:12                                                         ` Jan Djärv
@ 2007-09-08  7:01                                                         ` Richard Stallman
  1 sibling, 0 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-08  7:01 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel

Updating icons is a lot of work.  Perhaps you are just thinking of the
mechanics of installing new icon files, but that's just a little of
it.  For instance, we have to deal with license issues.

Please wait until Emacs 23 is close to ready for pretest,
then bring this up.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 17:46                                         ` svn icons in the toolbar Jan Djärv
  2007-09-02 17:58                                           ` Leo
@ 2007-09-18 21:55                                           ` Stephen Berman
  2007-09-19  6:26                                             ` Jan Djärv
  1 sibling, 1 reply; 106+ messages in thread
From: Stephen Berman @ 2007-09-18 21:55 UTC (permalink / raw)
  To: emacs-devel

On Sun, 02 Sep 2007 19:46:52 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Jan Djärv skrev:
>> Leo skrev:
>
>>>
>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>> old xpm images. A new one could look like this:
>>>
>> 
>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>> Does the icon you attached have a stock name?  Where is it from?
>> 
>
> I think it is the named icon system-file-manager.  I added that one.

I'm running GNU Emacs 23.0.50.3 (i686-pc-linux-gnu, GTK+ Version
2.10.6) of 2007-09-17 on escher under KDE 3.5.7.  The defcustom
x-gtk-stock-map from x-win.el contains this: ("etc/images/diropen"
. "n:system-file-manager").  Nevertheless, the relevant tool bars all
have diropen.xpm from etc/images rather than system-file-manager.png.
My system has the following system-file-manager icons:

    /opt/gnome/share/icons/gnome/16x16/apps/system-file-manager.png
    /opt/gnome/share/icons/gnome/22x22/apps/system-file-manager.png
    /opt/gnome/share/icons/gnome/24x24/apps/system-file-manager.png
    /opt/gnome/share/icons/gnome/32x32/apps/system-file-manager.png
    /usr/share/icons/Tango/128x128/apps/system-file-manager.png
    /usr/share/icons/Tango/16x16/apps/system-file-manager.png
    /usr/share/icons/Tango/22x22/apps/system-file-manager.png
    /usr/share/icons/Tango/24x24/apps/system-file-manager.png
    /usr/share/icons/Tango/32x32/apps/system-file-manager.png
    /usr/share/icons/Tango/48x48/apps/system-file-manager.png
    /usr/share/icons/Tango/64x64/apps/system-file-manager.png
    /usr/share/icons/Tango/72x72/apps/system-file-manager.png
    /usr/share/icons/Tango/96x96/apps/system-file-manager.png

When I run Emacs under Gnome, system-file-manager.png is used.  Note
that the tool bars do display the available Gnome stock icons under
KDE, it's just the named icon that isn't used.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-18 21:55                                           ` Stephen Berman
@ 2007-09-19  6:26                                             ` Jan Djärv
  2007-09-19  9:10                                               ` Stephen Berman
                                                                 ` (2 more replies)
  0 siblings, 3 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-19  6:26 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel



Stephen Berman skrev:
> On Sun, 02 Sep 2007 19:46:52 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
> 
>> Jan Djärv skrev:
>>> Leo skrev:
>>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>>> old xpm images. A new one could look like this:
>>>>
>>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>>> Does the icon you attached have a stock name?  Where is it from?
>>>
>> I think it is the named icon system-file-manager.  I added that one.
> 
> I'm running GNU Emacs 23.0.50.3 (i686-pc-linux-gnu, GTK+ Version
> 2.10.6) of 2007-09-17 on escher under KDE 3.5.7.  The defcustom
> x-gtk-stock-map from x-win.el contains this: ("etc/images/diropen"
> . "n:system-file-manager").  Nevertheless, the relevant tool bars all
> have diropen.xpm from etc/images rather than system-file-manager.png.
> My system has the following system-file-manager icons:
> 
>     /opt/gnome/share/icons/gnome/16x16/apps/system-file-manager.png
>     /opt/gnome/share/icons/gnome/22x22/apps/system-file-manager.png
>     /opt/gnome/share/icons/gnome/24x24/apps/system-file-manager.png
>     /opt/gnome/share/icons/gnome/32x32/apps/system-file-manager.png
>     /usr/share/icons/Tango/128x128/apps/system-file-manager.png
>     /usr/share/icons/Tango/16x16/apps/system-file-manager.png
>     /usr/share/icons/Tango/22x22/apps/system-file-manager.png
>     /usr/share/icons/Tango/24x24/apps/system-file-manager.png
>     /usr/share/icons/Tango/32x32/apps/system-file-manager.png
>     /usr/share/icons/Tango/48x48/apps/system-file-manager.png
>     /usr/share/icons/Tango/64x64/apps/system-file-manager.png
>     /usr/share/icons/Tango/72x72/apps/system-file-manager.png
>     /usr/share/icons/Tango/96x96/apps/system-file-manager.png
> 
> When I run Emacs under Gnome, system-file-manager.png is used.  Note
> that the tool bars do display the available Gnome stock icons under
> KDE, it's just the named icon that isn't used.
> 

I don't think named icons work under anything else than Gnome.  The theme is 
set in XSETTINGS and that is maintained by the gnome settings daemon.  The 
Gtk+ stock icons however, are hardcoded in Gtk+.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  6:26                                             ` Jan Djärv
@ 2007-09-19  9:10                                               ` Stephen Berman
  2007-09-19  9:20                                               ` Stephen Berman
  2007-09-19 21:22                                               ` Stephen Berman
  2 siblings, 0 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-19  9:10 UTC (permalink / raw)
  To: emacs-devel

On Wed, 19 Sep 2007 08:26:24 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Stephen Berman skrev:
[...]
>> When I run Emacs under Gnome, system-file-manager.png is used.  Note
>> that the tool bars do display the available Gnome stock icons under
>> KDE, it's just the named icon that isn't used.
>>
>
> I don't think named icons work under anything else than Gnome.  The
> theme is set in XSETTINGS and that is maintained by the gnome settings
> daemon.  The Gtk+ stock icons however, are hardcoded in Gtk+.

Can you imagine a workaround, some way to get the named icons on to
the tool bar under KDE?  It would be a pity to have to do without them
while using the Gnome stock icons.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  6:26                                             ` Jan Djärv
  2007-09-19  9:10                                               ` Stephen Berman
@ 2007-09-19  9:20                                               ` Stephen Berman
  2007-09-19  9:54                                                 ` Leo
                                                                   ` (2 more replies)
  2007-09-19 21:22                                               ` Stephen Berman
  2 siblings, 3 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-19  9:20 UTC (permalink / raw)
  To: emacs-devel

On Wed, 19 Sep 2007 08:26:24 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Stephen Berman skrev:
[...]
>> When I run Emacs under Gnome, system-file-manager.png is used.  Note
>> that the tool bars do display the available Gnome stock icons under
>> KDE, it's just the named icon that isn't used.
>>
>
> I don't think named icons work under anything else than Gnome.  The
> theme is set in XSETTINGS and that is maintained by the gnome settings
> daemon.  The Gtk+ stock icons however, are hardcoded in Gtk+.
>
> 	Jan D.

Hmm, pity.  I wonder if there is a workaround, some way to get the
named icons on to the tool bar under KDE that circumvents the Gnome
settings daemon.  It would be a shame to have to do without those
icons while using the Gnome stock icons.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  9:20                                               ` Stephen Berman
@ 2007-09-19  9:54                                                 ` Leo
  2007-09-19 10:08                                                   ` Jan Djärv
  2007-09-19 10:40                                                   ` Stephen Berman
  2007-09-19 10:02                                                 ` Jan Djärv
  2007-09-20 16:35                                                 ` Richard Stallman
  2 siblings, 2 replies; 106+ messages in thread
From: Leo @ 2007-09-19  9:54 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-19 10:20 +0100, Stephen Berman wrote:
> Hmm, pity.  I wonder if there is a workaround, some way to get the
> named icons on to the tool bar under KDE that circumvents the Gnome
> settings daemon.  It would be a shame to have to do without those
> icons while using the Gnome stock icons.

I can see Emacs using the new icons in any window managers such as fvwm,
xmonad; however I don't have kde installed.

You probably need to set something in ~/.gtk-2.0.

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  9:20                                               ` Stephen Berman
  2007-09-19  9:54                                                 ` Leo
@ 2007-09-19 10:02                                                 ` Jan Djärv
  2007-09-19 10:41                                                   ` Stephen Berman
  2007-09-20 16:35                                                 ` Richard Stallman
  2 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-19 10:02 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel



Stephen Berman skrev:
> On Wed, 19 Sep 2007 08:26:24 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
> 
>> Stephen Berman skrev:
> [...]
>>> When I run Emacs under Gnome, system-file-manager.png is used.  Note
>>> that the tool bars do display the available Gnome stock icons under
>>> KDE, it's just the named icon that isn't used.
>>>
>> I don't think named icons work under anything else than Gnome.  The
>> theme is set in XSETTINGS and that is maintained by the gnome settings
>> daemon.  The Gtk+ stock icons however, are hardcoded in Gtk+.
>>
>> 	Jan D.
> 
> Hmm, pity.  I wonder if there is a workaround, some way to get the
> named icons on to the tool bar under KDE that circumvents the Gnome
> settings daemon.  It would be a shame to have to do without those
> icons while using the Gnome stock icons.

I'll try.  I currently don't have KDE installed, so it will take a while.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  9:54                                                 ` Leo
@ 2007-09-19 10:08                                                   ` Jan Djärv
  2007-09-19 10:40                                                   ` Stephen Berman
  1 sibling, 0 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-19 10:08 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-19 10:20 +0100, Stephen Berman wrote:
>> Hmm, pity.  I wonder if there is a workaround, some way to get the
>> named icons on to the tool bar under KDE that circumvents the Gnome
>> settings daemon.  It would be a shame to have to do without those
>> icons while using the Gnome stock icons.
> 
> I can see Emacs using the new icons in any window managers such as fvwm,
> xmonad; however I don't have kde installed.
> 
> You probably need to set something in ~/.gtk-2.0.
> 

You can try

gtk-icon-theme-name = Tango

in ~/.emacs.d/gtkrc

However, the use of resource files is not guaranteed to work when stuff like 
gconfd is running.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  9:54                                                 ` Leo
  2007-09-19 10:08                                                   ` Jan Djärv
@ 2007-09-19 10:40                                                   ` Stephen Berman
  1 sibling, 0 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-19 10:40 UTC (permalink / raw)
  To: emacs-devel

On Wed, 19 Sep 2007 10:54:04 +0100 Leo <sdl.web@gmail.com> wrote:

> On 2007-09-19 10:20 +0100, Stephen Berman wrote:
>> Hmm, pity.  I wonder if there is a workaround, some way to get the
>> named icons on to the tool bar under KDE that circumvents the Gnome
>> settings daemon.  It would be a shame to have to do without those
>> icons while using the Gnome stock icons.
>
> I can see Emacs using the new icons in any window managers such as fvwm,
> xmonad; however I don't have kde installed.
>
> You probably need to set something in ~/.gtk-2.0.

Hmm, all I have is ~/.gtkrc-1.2-gnome2:

	# Autowritten by gnome-settings-daemon. Do not edit
	
	include "/opt/gnome/share/themes/Raleigh/gtk/gtkrc"
	
	include "/home/steve/.gtkrc.mine"

and ~/.gtkrc-2.0:

	# This file was written by the Gtk-Qt-Engine
	# You can edit it in the KDE control center, under "GTK Styles and Fonts"
	
	include "/opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc"
	
	style "user-font"
	{
		font_name="Sans Serif 10"
	}
	widget_class "*" style "user-font"
	
	gtk-theme-name="QtCurve"
	gtk-font-name="Sans Serif 10"

The file /opt/gnome/share/themes/QtCurve/gtk-2.0/gtkrc contains
specifications for the appearance of the tool bar, among others, but
nothing about the icons used.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19 10:02                                                 ` Jan Djärv
@ 2007-09-19 10:41                                                   ` Stephen Berman
  0 siblings, 0 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-19 10:41 UTC (permalink / raw)
  To: emacs-devel

On Wed, 19 Sep 2007 12:02:44 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Stephen Berman skrev:
>> Hmm, pity.  I wonder if there is a workaround, some way to get the
>> named icons on to the tool bar under KDE that circumvents the Gnome
>> settings daemon.  It would be a shame to have to do without those
>> icons while using the Gnome stock icons.
>
> I'll try.  I currently don't have KDE installed, so it will take a while.

Thanks.  If there's any way I can help, please let me know.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  6:26                                             ` Jan Djärv
  2007-09-19  9:10                                               ` Stephen Berman
  2007-09-19  9:20                                               ` Stephen Berman
@ 2007-09-19 21:22                                               ` Stephen Berman
  2007-09-20  6:24                                                 ` Jan Djärv
  2007-11-04 13:24                                                 ` Stephen Berman
  2 siblings, 2 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-19 21:22 UTC (permalink / raw)
  To: emacs-devel

On Wed, 19 Sep 2007 08:26:24 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Stephen Berman skrev:
>> On Sun, 02 Sep 2007 19:46:52 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
>>
>>> Jan Djärv skrev:
>>>> Leo skrev:
>>>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>>>> old xpm images. A new one could look like this:
>>>>>
>>>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>>>> Does the icon you attached have a stock name?  Where is it from?
>>>>
>>> I think it is the named icon system-file-manager.  I added that one.
>>
>> I'm running GNU Emacs 23.0.50.3 (i686-pc-linux-gnu, GTK+ Version
>> 2.10.6) of 2007-09-17 on escher under KDE 3.5.7.  The defcustom
>> x-gtk-stock-map from x-win.el contains this: ("etc/images/diropen"
>> . "n:system-file-manager").  Nevertheless, the relevant tool bars all
>> have diropen.xpm from etc/images rather than system-file-manager.png.
>> My system has the following system-file-manager icons:
>>
>>     /opt/gnome/share/icons/gnome/16x16/apps/system-file-manager.png
>>     /opt/gnome/share/icons/gnome/22x22/apps/system-file-manager.png
>>     /opt/gnome/share/icons/gnome/24x24/apps/system-file-manager.png
>>     /opt/gnome/share/icons/gnome/32x32/apps/system-file-manager.png
>>     /usr/share/icons/Tango/128x128/apps/system-file-manager.png
>>     /usr/share/icons/Tango/16x16/apps/system-file-manager.png
>>     /usr/share/icons/Tango/22x22/apps/system-file-manager.png
>>     /usr/share/icons/Tango/24x24/apps/system-file-manager.png
>>     /usr/share/icons/Tango/32x32/apps/system-file-manager.png
>>     /usr/share/icons/Tango/48x48/apps/system-file-manager.png
>>     /usr/share/icons/Tango/64x64/apps/system-file-manager.png
>>     /usr/share/icons/Tango/72x72/apps/system-file-manager.png
>>     /usr/share/icons/Tango/96x96/apps/system-file-manager.png
>>
>> When I run Emacs under Gnome, system-file-manager.png is used.  Note
>> that the tool bars do display the available Gnome stock icons under
>> KDE, it's just the named icon that isn't used.
>>
>
> I don't think named icons work under anything else than Gnome.  The
> theme is set in XSETTINGS and that is maintained by the gnome settings
> daemon.  The Gtk+ stock icons however, are hardcoded in Gtk+.

I forgot that I am using the gtk-qt engine, which "allows GTK
applications to use Qt widget styles", including tool bar icons.  The
icons I see are actually KDE icons from
/opt/kde3/share/icons/crystalsvg/32x32/actions.  I assume gtk-qt maps
the Gnome stock icons to corresponding KDE icons of the selected
theme.  I couldn't find an icon in the crystal theme corresponding to
system-file-manager, but it may just be that gtk-qt does not handle
named Gnome icons.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19 21:22                                               ` Stephen Berman
@ 2007-09-20  6:24                                                 ` Jan Djärv
  2007-09-24 15:56                                                   ` Stephen Berman
  2007-11-04 13:24                                                 ` Stephen Berman
  1 sibling, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-20  6:24 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 909 bytes --]



Stephen Berman skrev:

> I forgot that I am using the gtk-qt engine, which "allows GTK
> applications to use Qt widget styles", including tool bar icons.  The
> icons I see are actually KDE icons from
> /opt/kde3/share/icons/crystalsvg/32x32/actions.  I assume gtk-qt maps
> the Gnome stock icons to corresponding KDE icons of the selected
> theme.  I couldn't find an icon in the crystal theme corresponding to
> system-file-manager, but it may just be that gtk-qt does not handle
> named Gnome icons.
> 

Try the attached program.  Compile like this:

% gcc -o icon-view icon-view.c `pkg-config  gtk+-2.0 --cflags --libs`

If run without arguments, it lists the named icons Gtk+ knows about.  The list 
may be long, I have 2309 names.

If you give it names as arguments, it displays a tool bar with those icons.

If it just list stock-* names, then the gtk-qt engine only deals with stock icons.

	Jan D.

[-- Attachment #2: icon-view.c --]
[-- Type: text/x-csrc, Size: 2147 bytes --]

#include <stdio.h>

#include <libintl.h>
#include <string.h>
#include <gtk/gtk.h>

static gboolean
destroy(GtkWidget *widget,
        GdkEvent *event,
        gpointer data)
{
    gtk_main_quit();
    return TRUE;
}

static gint
comp_func(gconstpointer a,
          gconstpointer b,
          gpointer user_data)
{
    return strcmp((const char *)a, (const char *)b);
}

int
main(int argc, char *argv[])
{
    gtk_set_locale();
    gtk_init(&argc, &argv);

    GtkWidget *wmain = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(wmain), "icon-view");

    g_signal_connect(G_OBJECT(wmain), "delete-event",
                     G_CALLBACK(destroy), 0);

    GtkWidget *tb = gtk_toolbar_new();
    GtkTooltips *wtooltip = gtk_tooltips_new();
    gtk_toolbar_set_show_arrow(GTK_TOOLBAR(tb), FALSE);
    gtk_toolbar_set_style(GTK_TOOLBAR(tb), GTK_TOOLBAR_ICONS);

    size_t i;

    if (argc == 1) {
        GdkDisplay *gdpy = gdk_display_get_default();
        GdkScreen *gscreen = gdk_display_get_default_screen(gdpy);
        GtkIconTheme *icontheme = gtk_icon_theme_get_for_screen(gscreen);
        GList *list = gtk_icon_theme_list_icons(icontheme, NULL);

        list = g_list_sort_with_data(list, comp_func, NULL);
        GList *it;
        for (it = list; it != NULL; it = g_list_next(it)) {
            printf("%s\n", (char *)it->data);
        }
        return 0;
    }

    for (i = 1; i < argc; ++i) {
        int is_stock = 0;
        const char *name = argv[i];
        if (strncmp("s:", name, 2) == 0) {
            is_stock = 1;
            name += 2;
        }

        GtkToolItem*  ti;
        if (is_stock) {
            ti = gtk_tool_button_new_from_stock(name);
        } else {
            ti = gtk_tool_button_new(NULL, NULL);
            gtk_tool_button_set_icon_name(GTK_TOOL_BUTTON(ti), name);
        }
        gtk_tool_item_set_expand(ti, TRUE);
        gtk_tool_item_set_tooltip(ti, wtooltip, name, NULL);
        gtk_toolbar_insert(GTK_TOOLBAR(tb), GTK_TOOL_ITEM(ti), -1);
    }

    gtk_container_add(GTK_CONTAINER(wmain), tb);
    gtk_widget_show_all(wmain);
    gtk_main();

    return 0;
}

[-- Attachment #3: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19  9:20                                               ` Stephen Berman
  2007-09-19  9:54                                                 ` Leo
  2007-09-19 10:02                                                 ` Jan Djärv
@ 2007-09-20 16:35                                                 ` Richard Stallman
  2007-09-24 15:56                                                   ` Stephen Berman
  2 siblings, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-09-20 16:35 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

    Hmm, pity.  I wonder if there is a workaround, some way to get the
    named icons on to the tool bar under KDE that circumvents the Gnome
    settings daemon.

Do you mean, despite the absence of the GNOME settings daemon?
I agree.

Does KDE have any concept of standard icons?

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-02 17:58                                           ` Leo
@ 2007-09-21 10:24                                             ` Leo
  2007-09-21 11:13                                               ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-21 10:24 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-02 18:58 +0100, Leo wrote:
>> I think it is the named icon system-file-manager.  I added that one.
>>
>> 	Jan D.
>
> The main tool-bar now looks beautiful. However the info tool-bar need
> some love. I will come back to this later.

I cannot see any icons in the toolbar in info mode. It is just a blank
widget.

How can I find out what's wrong?

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 10:24                                             ` Leo
@ 2007-09-21 11:13                                               ` Jan Djärv
  2007-09-21 11:17                                                 ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-21 11:13 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-02 18:58 +0100, Leo wrote:
>>> I think it is the named icon system-file-manager.  I added that one.
>>>
>>> 	Jan D.
>> The main tool-bar now looks beautiful. However the info tool-bar need
>> some love. I will come back to this later.
> 
> I cannot see any icons in the toolbar in info mode. It is just a blank
> widget.
> 
> How can I find out what's wrong?
> 

Give a detailed description on how you eded up that way.  Does it happen when 
you do
% emacs -Q
C-h i

?

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 11:13                                               ` Jan Djärv
@ 2007-09-21 11:17                                                 ` Leo
  2007-09-21 12:08                                                   ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-21 11:17 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-21 12:13 +0100, Jan Djärv wrote:
>> I cannot see any icons in the toolbar in info mode. It is just a blank
>> widget.
>>
>> How can I find out what's wrong?
>>
>
> Give a detailed description on how you eded up that way.  Does it
> happen when you do
> % emacs -Q
> C-h i
>
> ?
>
> 	Jan D.

I can only see it in my running Emacs. Can't reproduce it.

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 11:17                                                 ` Leo
@ 2007-09-21 12:08                                                   ` Jan Djärv
  2007-09-21 12:45                                                     ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-21 12:08 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-21 12:13 +0100, Jan Djärv wrote:
>>> I cannot see any icons in the toolbar in info mode. It is just a blank
>>> widget.
>>>
>>> How can I find out what's wrong?
>>>
>> Give a detailed description on how you eded up that way.  Does it
>> happen when you do
>> % emacs -Q
>> C-h i
>>
>> ?
>>
>> 	Jan D.
> 
> I can only see it in my running Emacs. Can't reproduce it.
> 

Well, I don't know then.  Did you upgrade any files, libraries or so while 
Emacs was running?  If you kill the Emacs buffer (C-x k, not q) and open it 
again, is it still blank?

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 12:08                                                   ` Jan Djärv
@ 2007-09-21 12:45                                                     ` Leo
  2007-09-21 13:08                                                       ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-21 12:45 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-21 13:08 +0100, Jan Djärv wrote:
> Leo skrev:
>> On 2007-09-21 12:13 +0100, Jan Djärv wrote:
>>>> I cannot see any icons in the toolbar in info mode. It is just a blank
>>>> widget.
>>>>
>>>> How can I find out what's wrong?
>>>>
>>> Give a detailed description on how you eded up that way.  Does it
>>> happen when you do
>>> % emacs -Q
>>> C-h i
>>>
>>> ?
>>>
>>> 	Jan D.
>>
>> I can only see it in my running Emacs. Can't reproduce it.
>>
>
> Well, I don't know then.  Did you upgrade any files, libraries or so
> while Emacs was running? 

Never.

> If you kill the Emacs buffer (C-x k, not q) and open it again, is it
> still blank?
>
> 	Jan D.

After doing C-x k the main tool bar is also blank.

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 12:45                                                     ` Leo
@ 2007-09-21 13:08                                                       ` Jan Djärv
  2007-09-21 14:18                                                         ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-21 13:08 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-21 13:08 +0100, Jan Djärv wrote:
>> Leo skrev:
>>> On 2007-09-21 12:13 +0100, Jan Djärv wrote:
>>>>> I cannot see any icons in the toolbar in info mode. It is just a blank
>>>>> widget.
>>>>>
>>>>> How can I find out what's wrong?
>>>>>
>>>> Give a detailed description on how you eded up that way.  Does it
>>>> happen when you do
>>>> % emacs -Q
>>>> C-h i
>>>>
>>>> ?
>>>>
>>>> 	Jan D.
>>> I can only see it in my running Emacs. Can't reproduce it.
>>>
>> Well, I don't know then.  Did you upgrade any files, libraries or so
>> while Emacs was running? 
> 
> Never.
> 
>> If you kill the Emacs buffer (C-x k, not q) and open it again, is it
>> still blank?
>>
>> 	Jan D.
> 
> After doing C-x k the main tool bar is also blank.
> 

It is Gtk+ that opens the files and paints the icons.  It should paint a 
broken image if it does not find them.  Can you try:

% strace -odebug -eopen -p <pid_of_emacs>

and then open a new frame in Emacs?
Then kill strace with control-C.  The file debug should contain open of the 
icon files, if they don't something is very broken.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 13:08                                                       ` Jan Djärv
@ 2007-09-21 14:18                                                         ` Leo
  2007-09-21 15:14                                                           ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Leo @ 2007-09-21 14:18 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 708 bytes --]

On 2007-09-21 14:08 +0100, Jan Djärv wrote:
>>> If you kill the Emacs buffer (C-x k, not q) and open it again, is it
>>> still blank?
>>>
>>> 	Jan D.
>>
>> After doing C-x k the main tool bar is also blank.
>>
>
> It is Gtk+ that opens the files and paints the icons.  It should
> paint a broken image if it does not find them.  Can you try:
>
> % strace -odebug -eopen -p <pid_of_emacs>
>
> and then open a new frame in Emacs?
> Then kill strace with control-C.  The file debug should contain open
> of the icon files, if they don't something is very broken.
>
> 	Jan D.

It might be mtty. After I start another emaclient I could not see that
the main toolbar is blank. Only the one in info mode is blank.


[-- Attachment #2: debug --]
[-- Type: application/octet-stream, Size: 34123 bytes --]

open("/proc/loadavg", O_RDONLY)         = 9
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/Documents/RC/freshers/HandBook/handbook2.tex", O_RDONLY|O_LARGEFILE) = 9
open("/dev/shm/KOMAArtikel.tex", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/.emacs.d/gnus", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/.emacs.d/etc/diary", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/Wiki/org/CU.org", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/Wiki/org/Tasks.org", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/Wiki/org/LaTeX.org", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/CU/2007-2008/office/culetter.tex", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/.emacs.d/etc/personal.diary", O_RDONLY|O_LARGEFILE) = 9
open("/home/leo/Wiki/org/PhD.org", O_RDONLY|O_LARGEFILE) = 9
open("/tmp/.gdmT2TNYT", O_RDONLY)       = 21
open("/tmp/.gdmT2TNYT", O_RDONLY)       = 21
open("/home/leo/.Xdefaults-sl392", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/left_ptr", O_RDONLY) = 21
open("/home/leo/.icons/default/cursors/sb_v_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_v_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/sb_v_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_v_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/sb_v_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/sb_v_double_arrow", O_RDONLY) = 21
open("/home/leo/.Xdefaults-localhost.localdomain", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/X11/locale/compose.dir", O_RDONLY) = 21
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 21
open("/home/leo/.XCompose", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("/usr/share/X11/locale/compose.dir", O_RDONLY) = 21
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 21
open("/usr/share/X11/locale/compose.dir", O_RDONLY) = 21
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 21
open("/home/leo/.XCompose", O_RDONLY)   = -1 ENOENT (No such file or directory)
open("/usr/share/X11/locale/compose.dir", O_RDONLY) = 21
open("/usr/share/X11/locale/en_US.UTF-8/Compose", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/xterm", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/left_ptr", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/watch", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/xterm", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/hand2", O_RDONLY) = 21
open("/home/leo/.icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/sb_h_double_arrow", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
open("/etc/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/themes/Clearlooks/gtk-2.0/gtkrc", O_RDONLY|O_LARGEFILE) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/xterm", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/left_ptr", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/left_ptr", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/watch", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/watch", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/xterm", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/xterm", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
open("/home/leo/.icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/hand2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/hand2", O_RDONLY) = 21
open("/home/leo/.icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/index.theme", O_RDONLY) = 21
open("/usr/share/pixmaps/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/default/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/cursors/sb_h_double_arrow", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/leo/.icons/Bluecurve/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/icons/Bluecurve/cursors/sb_h_double_arrow", O_RDONLY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
open("/usr/share/icons/Fedora/index.theme", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/Fedora/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/Fedora/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 22
open("/usr/share/icons/Mist/index.theme", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/Mist/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/Mist/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 22
open("/usr/share/icons/gnome/index.theme", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/gnome/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/gnome/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 22
open("/usr/share/icons/hicolor/index.theme", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 21
open("/usr/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = 22
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/16x16/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/16x16/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/22x22/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/22x22/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/24x24/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/24x24/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/32x32/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/32x32/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/36x36/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/36x36/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/48x48/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/48x48/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/64x64/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/64x64/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/96x96/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/96x96/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/128x128/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/128x128/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/192x192/apps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/hicolor/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons/hicolor/192x192/mimetypes", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/home/leo/.local/share/icons/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/home/leo/.local/share/icons", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/usr/share/icons/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/icons", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/usr/local/share/pixmaps/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/local/share/pixmaps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
open("/usr/share/pixmaps/icon-theme.cache", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such file or directory)
open("/usr/share/pixmaps", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGALRM (Alarm clock) @ 0 (0) ---
open("/home/leo/Documents/RC/freshers/HandBook/handbook2.tex", O_RDONLY|O_LARGEFILE) = 21
open("/dev/shm/KOMAArtikel.tex", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/.emacs.d/gnus", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/.emacs.d/etc/diary", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/Wiki/org/CU.org", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/Wiki/org/Tasks.org", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/Wiki/org/LaTeX.org", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/CU/2007-2008/office/culetter.tex", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/.emacs.d/etc/personal.diary", O_RDONLY|O_LARGEFILE) = 21
open("/home/leo/Wiki/org/PhD.org", O_RDONLY|O_LARGEFILE) = 21
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---
--- SIGIO (I/O possible) @ 0 (0) ---

[-- Attachment #3: Type: text/plain, Size: 218 bytes --]


HTH,
-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

[-- Attachment #4: Type: text/plain, Size: 142 bytes --]

_______________________________________________
Emacs-devel mailing list
Emacs-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-devel

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 14:18                                                         ` Leo
@ 2007-09-21 15:14                                                           ` Jan Djärv
  2007-09-21 16:03                                                             ` Leo
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-21 15:14 UTC (permalink / raw)
  To: Leo; +Cc: emacs-devel



Leo skrev:
> On 2007-09-21 14:08 +0100, Jan Djärv wrote:
>>>> If you kill the Emacs buffer (C-x k, not q) and open it again, is it
>>>> still blank?
>>>>
>>>> 	Jan D.
>>> After doing C-x k the main tool bar is also blank.
>>>
>> It is Gtk+ that opens the files and paints the icons.  It should
>> paint a broken image if it does not find them.  Can you try:
>>
>> % strace -odebug -eopen -p <pid_of_emacs>
>>
>> and then open a new frame in Emacs?
>> Then kill strace with control-C.  The file debug should contain open
>> of the icon files, if they don't something is very broken.
>>
>> 	Jan D.
> 
> It might be mtty. After I start another emaclient I could not see that
> the main toolbar is blank. Only the one in info mode is blank.
> 

I see in your debug file that you have an icon cache.  It may be that one that 
is broken/updated.  Try

% gtk-update-icon-cache -f /usr/share/icons/Fedora
% gtk-update-icon-cache -f /usr/share/icons/Mist
% gtk-update-icon-cache -f /usr/share/icons/gnome
% gtk-update-icon-cache -f /usr/share/icons/hicolor

and then create a new frame.

I suspect some kind of Gtk+-bug.  So maybe just restart Emacs and continue...

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-21 15:14                                                           ` Jan Djärv
@ 2007-09-21 16:03                                                             ` Leo
  0 siblings, 0 replies; 106+ messages in thread
From: Leo @ 2007-09-21 16:03 UTC (permalink / raw)
  To: emacs-devel

On 2007-09-21 16:14 +0100, Jan Djärv wrote:
>> It might be mtty. After I start another emaclient I could not see that
>> the main toolbar is blank. Only the one in info mode is blank.
>>
>
> I see in your debug file that you have an icon cache.  It may be
> that one that is broken/updated.  Try
>
> % gtk-update-icon-cache -f /usr/share/icons/Fedora
> % gtk-update-icon-cache -f /usr/share/icons/Mist
> % gtk-update-icon-cache -f /usr/share/icons/gnome
> % gtk-update-icon-cache -f /usr/share/icons/hicolor
>
> and then create a new frame.

no difference.

> I suspect some kind of Gtk+-bug.  So maybe just restart Emacs and
> continue...

Thanks ;)

-- 
.:  Leo  :.  [ sdl.web AT gmail.com ]  .:  [ GPG Key: 9283AA3F ]  :.

                                                 I use GNU Emacs  <=
                              http://www.gnu.org/software/emacs/  <=

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-20  6:24                                                 ` Jan Djärv
@ 2007-09-24 15:56                                                   ` Stephen Berman
  2007-09-24 16:04                                                     ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Stephen Berman @ 2007-09-24 15:56 UTC (permalink / raw)
  To: emacs-devel

On Thu, 20 Sep 2007 08:24:46 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:

> Stephen Berman skrev:
>
>> I forgot that I am using the gtk-qt engine, which "allows GTK
>> applications to use Qt widget styles", including tool bar icons.  The
>> icons I see are actually KDE icons from
>> /opt/kde3/share/icons/crystalsvg/32x32/actions.  I assume gtk-qt maps
>> the Gnome stock icons to corresponding KDE icons of the selected
>> theme.  I couldn't find an icon in the crystal theme corresponding to
>> system-file-manager, but it may just be that gtk-qt does not handle
>> named Gnome icons.
>>
>
> Try the attached program.  Compile like this:
>
> % gcc -o icon-view icon-view.c `pkg-config  gtk+-2.0 --cflags --libs`
>
> If run without arguments, it lists the named icons Gtk+ knows about.
> The list may be long, I have 2309 names.
>
> If you give it names as arguments, it displays a tool bar with those icons.
>
> If it just list stock-* names, then the gtk-qt engine only deals
> with stock icons.

Thanks.  The program prints a list of 1279 names.  The list contains
only two items matching stock*: stock_keyring and stock_printers, and
only one item matching gtk*: gtkvim.  The list does not contain
system-file-manager.  I do not see how your program interacts with
gtk-qt.  I looked at the gtk-qt sources and found a function
doIconMapping() which IIUC maps a GTK+ stock icon to a corresponding
KDE icon, the specific icons are hardcoded in the function
setRcProperties().  I could not find any function that looked like it
handles names icons, but I could well have overlooked it.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-20 16:35                                                 ` Richard Stallman
@ 2007-09-24 15:56                                                   ` Stephen Berman
  2007-09-25 10:44                                                     ` Richard Stallman
  2007-09-26 16:43                                                     ` Dan Nicolaescu
  0 siblings, 2 replies; 106+ messages in thread
From: Stephen Berman @ 2007-09-24 15:56 UTC (permalink / raw)
  To: emacs-devel

On Thu, 20 Sep 2007 12:35:17 -0400 Richard Stallman <rms@gnu.org> wrote:

>     Hmm, pity.  I wonder if there is a workaround, some way to get the
>     named icons on to the tool bar under KDE that circumvents the Gnome
>     settings daemon.
>
> Do you mean, despite the absence of the GNOME settings daemon?
> I agree.

In my case it is the gtk-qt engine that regulates the choice of
theme-related icons via a mapping from the GTK+ icons.  I don't know
the details of gtk-qt but I assume it doesn't use the GNOME settings
daemon. 

> Does KDE have any concept of standard icons?

I am not familiar with the KDE icon API but I briefly searched the
docs on my system as well as the web and couldn't find anything for
KDE icons that seems similar to GNOME's stock icons.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-24 15:56                                                   ` Stephen Berman
@ 2007-09-24 16:04                                                     ` Jan Djärv
  0 siblings, 0 replies; 106+ messages in thread
From: Jan Djärv @ 2007-09-24 16:04 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

Stephen Berman skrev:
> On Thu, 20 Sep 2007 08:24:46 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
> 
>> Stephen Berman skrev:
>>
>>> I forgot that I am using the gtk-qt engine, which "allows GTK
>>> applications to use Qt widget styles", including tool bar icons.  The
>>> icons I see are actually KDE icons from
>>> /opt/kde3/share/icons/crystalsvg/32x32/actions.  I assume gtk-qt maps
>>> the Gnome stock icons to corresponding KDE icons of the selected
>>> theme.  I couldn't find an icon in the crystal theme corresponding to
>>> system-file-manager, but it may just be that gtk-qt does not handle
>>> named Gnome icons.
>>>
>> Try the attached program.  Compile like this:
>>
>> % gcc -o icon-view icon-view.c `pkg-config  gtk+-2.0 --cflags --libs`
>>
>> If run without arguments, it lists the named icons Gtk+ knows about.
>> The list may be long, I have 2309 names.
>>
>> If you give it names as arguments, it displays a tool bar with those icons.
>>
>> If it just list stock-* names, then the gtk-qt engine only deals
>> with stock icons.
> 
> Thanks.  The program prints a list of 1279 names.  The list contains
> only two items matching stock*: stock_keyring and stock_printers, and
> only one item matching gtk*: gtkvim.  The list does not contain
> system-file-manager.  I do not see how your program interacts with
> gtk-qt.

It does not, it just uses Gtk+ functions. gtk-qt does its job behind the scenes.

> I looked at the gtk-qt sources and found a function
> doIconMapping() which IIUC maps a GTK+ stock icon to a corresponding
> KDE icon, the specific icons are hardcoded in the function
> setRcProperties().  I could not find any function that looked like it
> handles names icons, but I could well have overlooked it.
> 

There are relativly few stock icons, so mapping those to Qt-icons is not that
hard.  But over 2000 named icons is probably too much for Qt to attempt.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-24 15:56                                                   ` Stephen Berman
@ 2007-09-25 10:44                                                     ` Richard Stallman
  2007-09-25 11:43                                                       ` Frank Schmitt
  2007-09-26 16:43                                                     ` Dan Nicolaescu
  1 sibling, 1 reply; 106+ messages in thread
From: Richard Stallman @ 2007-09-25 10:44 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

    I am not familiar with the KDE icon API but I briefly searched the
    docs on my system as well as the web and couldn't find anything for
    KDE icons that seems similar to GNOME's stock icons.

That is too bad.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-25 10:44                                                     ` Richard Stallman
@ 2007-09-25 11:43                                                       ` Frank Schmitt
  2007-09-25 13:54                                                         ` Stephen Berman
  0 siblings, 1 reply; 106+ messages in thread
From: Frank Schmitt @ 2007-09-25 11:43 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I am not familiar with the KDE icon API but I briefly searched the
>     docs on my system as well as the web and couldn't find anything for
>     KDE icons that seems similar to GNOME's stock icons.
>
> That is too bad.

I think there is a common standard supported by both gnome and KDE which
is developed by the Tango project at freedesktop.org (see
http://tango.freedesktop.org/Tango_Desktop_Project contact at
xdg@lists.freedesktop.org)

-- 
Did you ever realize how much text fits in eighty columns? If you now consider
that a signature usually consists of up to four lines, this gives you enough
space to spread a tremendous amount of information with your messages. So seize
this opportunity and don't waste your signature with bullshit nobody will read.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-25 11:43                                                       ` Frank Schmitt
@ 2007-09-25 13:54                                                         ` Stephen Berman
  2007-09-26  6:17                                                           ` Jan Djärv
  0 siblings, 1 reply; 106+ messages in thread
From: Stephen Berman @ 2007-09-25 13:54 UTC (permalink / raw)
  To: emacs-devel

On Tue, 25 Sep 2007 13:43:52 +0200 Frank Schmitt <ich@frank-schmitt.net> wrote:

> Richard Stallman <rms@gnu.org> writes:
>
>>     I am not familiar with the KDE icon API but I briefly searched the
>>     docs on my system as well as the web and couldn't find anything for
>>     KDE icons that seems similar to GNOME's stock icons.
>>
>> That is too bad.
>
> I think there is a common standard supported by both gnome and KDE which
> is developed by the Tango project at freedesktop.org (see
> http://tango.freedesktop.org/Tango_Desktop_Project contact at
> xdg@lists.freedesktop.org)

I see that the Tango Standard Icon Naming Specification proposes a
classification of icon types and standard icon names that KDE and
GNOME both more or less use.  What I don't see in KDE is any naming
scheme like GNOME's stock* or gtk* icons.  It looks like these are
often aliases for icon names conforming to the Tango Standard Icon
Naming Specification.  I don't know what criteria GNOME uses to call
certain icons stock icons, nor just what role these play in the GNOME
icon API.  The Tango website also says: "In the short term, existing
KDE and GNOME icons names will be addressed using symlinks. We have
prepared a script which automatically generates appropriate symlinks
for existing naming schemes in GNOME and KDE so that compatibility
with current desktop applications will be preserved."  I have no idea
if this makes sense, but maybe this script could somehow be used or
adapted by Emacs to map GTK+ to Qt/KDE icons.

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-25 13:54                                                         ` Stephen Berman
@ 2007-09-26  6:17                                                           ` Jan Djärv
  2007-09-26 16:29                                                             ` Richard Stallman
  0 siblings, 1 reply; 106+ messages in thread
From: Jan Djärv @ 2007-09-26  6:17 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel



Stephen Berman skrev:

> 
> I see that the Tango Standard Icon Naming Specification proposes a
> classification of icon types and standard icon names that KDE and
> GNOME both more or less use.  What I don't see in KDE is any naming
> scheme like GNOME's stock* or gtk* icons.  It looks like these are
> often aliases for icon names conforming to the Tango Standard Icon
> Naming Specification.  I don't know what criteria GNOME uses to call
> certain icons stock icons, nor just what role these play in the GNOME
> icon API.

I guess that it is being present in Gtk+ that makes them "stock".

> The Tango website also says: "In the short term, existing
> KDE and GNOME icons names will be addressed using symlinks. We have
> prepared a script which automatically generates appropriate symlinks
> for existing naming schemes in GNOME and KDE so that compatibility
> with current desktop applications will be preserved."  I have no idea
> if this makes sense, but maybe this script could somehow be used or
> adapted by Emacs to map GTK+ to Qt/KDE icons.
> 

Would it not be better to figure out a set of named icons that either can be 
used on both KDE and Gnome (I guess this is what Tango is about) or add a KDE 
specific set of names to Emacs?  Users can then select to use the KDE names if 
they run KDE.

	Jan D.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-26  6:17                                                           ` Jan Djärv
@ 2007-09-26 16:29                                                             ` Richard Stallman
  0 siblings, 0 replies; 106+ messages in thread
From: Richard Stallman @ 2007-09-26 16:29 UTC (permalink / raw)
  To: Jan Djärv; +Cc: Stephen.Berman, emacs-devel

    Would it not be better to figure out a set of named icons that either can be 
    used on both KDE and Gnome (I guess this is what Tango is about) or add a KDE 
    specific set of names to Emacs?  Users can then select to use the KDE names if 
    they run KDE.

It would be better to put in a translation table from GNOME stock
names to corresponding KDE names.  Then you could tell Emacs to apply
this set of translations, if you need it.

Emacs could even try automatically to use these translations, if
it discovers any problem with using the GNOME icons or names.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-24 15:56                                                   ` Stephen Berman
  2007-09-25 10:44                                                     ` Richard Stallman
@ 2007-09-26 16:43                                                     ` Dan Nicolaescu
  1 sibling, 0 replies; 106+ messages in thread
From: Dan Nicolaescu @ 2007-09-26 16:43 UTC (permalink / raw)
  To: Stephen Berman; +Cc: emacs-devel

Stephen Berman <Stephen.Berman@gmx.net> writes:

  > On Thu, 20 Sep 2007 12:35:17 -0400 Richard Stallman <rms@gnu.org> wrote:
  > 
  > >     Hmm, pity.  I wonder if there is a workaround, some way to get the
  > >     named icons on to the tool bar under KDE that circumvents the Gnome
  > >     settings daemon.
  > >
  > > Do you mean, despite the absence of the GNOME settings daemon?
  > > I agree.
  > 
  > In my case it is the gtk-qt engine that regulates the choice of
  > theme-related icons via a mapping from the GTK+ icons.  I don't know
  > the details of gtk-qt but I assume it doesn't use the GNOME settings
  > daemon. 
  > 
  > > Does KDE have any concept of standard icons?
  > 
  > I am not familiar with the KDE icon API but I briefly searched the
  > docs on my system as well as the web and couldn't find anything for
  > KDE icons that seems similar to GNOME's stock icons.


Do other gnome applications like gedit for example find the correct
icons? gedit ought to use some of the same icons that emacs is trying
to use.

^ permalink raw reply	[flat|nested] 106+ messages in thread

* gmm-tool-bar-style (was: svn icons in the toolbar)
  2007-09-05 23:53                                                 ` Leo
@ 2007-09-26 20:11                                                   ` Reiner Steib
  0 siblings, 0 replies; 106+ messages in thread
From: Reiner Steib @ 2007-09-26 20:11 UTC (permalink / raw)
  To: Leo; +Cc: Gnus, emacs-devel

On Thu, Sep 02 2007, Leo wrote:
> Have you noticed that the tool-bar in Gnus's article buffer, summary
> buffer and message buffer has gone back to using the old-fashioned icons
> or missing a couple of icons. See:
[ Screen shots, see http://article.gmane.org/gmane.emacs.devel/77591 ]

On Thu, Sep 06 2007, Leo wrote:
> My Emacs was installed from a fresh CVS check out on the first build
> which you can see from 23.0.50.1.
>
> Toobar and menubar are initially disabled.
> Emacs.menuBar: 0
> Emacs.toolBar: 0

[ -xrm 'Emacs.toolBar:0' ]

> Turn on tool-bar-mode and switch to gnus buffers and you can see the
> weird tool-bar shown up.

I think similar problems appear with Emacs 22.1.  

Maybe the bug is the default value of `gmm-tool-bar-style':

--8<---------------cut here---------------start------------->8---
(defcustom gmm-tool-bar-style
  (if (and (boundp 'tool-bar-mode)
	   tool-bar-mode
	   (and (fboundp 'display-visual-class)
		(not (memq (display-visual-class)
			   (list 'static-gray 'gray-scale
				 'static-color 'pseudo-color)))))
      'gnome
    'retro)
  "Prefered tool bar style."
  :type '(choice (const :tag "GNOME style" gnome)
		 (const :tag "Retro look"  retro))
  :group 'gmm)
--8<---------------cut here---------------end--------------->8---

I don't exactly remember what I had in mind with testing for non-nil
`tool-bar-mode'.  Could you try the following patch?

--8<---------------cut here---------------start------------->8---
--- gmm-utils.el	27 Apr 2007 10:39:17 +0200	7.33
+++ gmm-utils.el	26 Sep 2007 22:01:11 +0200	
@@ -208,7 +281,6 @@
 
 (defcustom gmm-tool-bar-style
   (if (and (boundp 'tool-bar-mode)
-	   tool-bar-mode
 	   (and (fboundp 'display-visual-class)
 		(not (memq (display-visual-class)
 			   (list 'static-gray 'gray-scale
--8<---------------cut here---------------end--------------->8---

Bye, Reiner.
-- 
       ,,,
      (o o)
---ooO-(_)-Ooo---  |  PGP key available  |  http://rsteib.home.pages.de/

^ permalink raw reply	[flat|nested] 106+ messages in thread

* Re: svn icons in the toolbar
  2007-09-19 21:22                                               ` Stephen Berman
  2007-09-20  6:24                                                 ` Jan Djärv
@ 2007-11-04 13:24                                                 ` Stephen Berman
  1 sibling, 0 replies; 106+ messages in thread
From: Stephen Berman @ 2007-11-04 13:24 UTC (permalink / raw)
  To: emacs-devel

An update:

On Wed, 19 Sep 2007 23:22:58 +0200 Stephen Berman
<Stephen.Berman@gmx.net> wrote: 

> On Wed, 19 Sep 2007 08:26:24 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
>
>> Stephen Berman skrev:
>>> On Sun, 02 Sep 2007 19:46:52 +0200 Jan Djärv <jan.h.d@swipnet.se> wrote:
>>>
>>>> Jan Djärv skrev:
>>>>> Leo skrev:
>>>>>> However have you noticed the 3rd icon on the tool-bar is still from the
>>>>>> old xpm images. A new one could look like this:
>>>>>>
>>>>> Yes, I've noticed.  That is because I found no suitable stock icon for it.
>>>>> Does the icon you attached have a stock name?  Where is it from?
>>>>>
>>>> I think it is the named icon system-file-manager.  I added that one.
>>>
>>> I'm running GNU Emacs 23.0.50.3 (i686-pc-linux-gnu, GTK+ Version
>>> 2.10.6) of 2007-09-17 on escher under KDE 3.5.7.  The defcustom
>>> x-gtk-stock-map from x-win.el contains this: ("etc/images/diropen"
>>> . "n:system-file-manager").  Nevertheless, the relevant tool bars all
>>> have diropen.xpm from etc/images rather than system-file-manager.png.
>>> My system has the following system-file-manager icons:
>>>
>>>     /opt/gnome/share/icons/gnome/16x16/apps/system-file-manager.png
>>>     /opt/gnome/share/icons/gnome/22x22/apps/system-file-manager.png
>>>     /opt/gnome/share/icons/gnome/24x24/apps/system-file-manager.png
>>>     /opt/gnome/share/icons/gnome/32x32/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/128x128/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/16x16/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/22x22/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/24x24/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/32x32/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/48x48/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/64x64/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/72x72/apps/system-file-manager.png
>>>     /usr/share/icons/Tango/96x96/apps/system-file-manager.png
>>>
>>> When I run Emacs under Gnome, system-file-manager.png is used.  Note
>>> that the tool bars do display the available Gnome stock icons under
>>> KDE, it's just the named icon that isn't used.
>>>
>>
>> I don't think named icons work under anything else than Gnome.  The
>> theme is set in XSETTINGS and that is maintained by the gnome settings
>> daemon.  The Gtk+ stock icons however, are hardcoded in Gtk+.
>
> I forgot that I am using the gtk-qt engine, which "allows GTK
> applications to use Qt widget styles", including tool bar icons.  The
> icons I see are actually KDE icons from
> /opt/kde3/share/icons/crystalsvg/32x32/actions.  I assume gtk-qt maps
> the Gnome stock icons to corresponding KDE icons of the selected
> theme.  I couldn't find an icon in the crystal theme corresponding to
> system-file-manager, but it may just be that gtk-qt does not handle
> named Gnome icons.
>
> Steve Berman

I recently installed openSUSE 10.3 and there I do see the named
system-file-manager icon in the tool bar under KDE.  I would guess this
is due to an updated gtk-qt engine, but I haven't tried the latest
gtk-qt engine in openSUSE 10.2.  I did look at gtk-qt source and was
surprised to find no reference to system-file-manager, but maybe it's
referred to differently or I just don't understand how the mapping is
done.  Whatever, at least I see the icon now.  Hopefully I'll still be
able to after the bug that the code to handle named icons introduced
(see my post about Emacs aborting with a detached GTK+ tool bar) is
fixed!

Steve Berman

^ permalink raw reply	[flat|nested] 106+ messages in thread

end of thread, other threads:[~2007-11-04 13:24 UTC | newest]

Thread overview: 106+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-08 23:56 SVG support(again) ? joakim
2007-08-09 21:17 ` joakim
2007-08-09 21:36   ` David Kastrup
2007-08-09 21:45     ` Jason Rumney
2007-08-09 21:58       ` joakim
2007-08-09 21:48     ` joakim
2007-08-11  5:05   ` Richard Stallman
2007-08-14 11:57     ` joakim
2007-08-14 23:26       ` Richard Stallman
2007-08-15  7:11         ` Mathias Dahl
2007-08-16  9:03         ` joakim
2007-08-17  0:32           ` Richard Stallman
2007-08-18 11:44             ` joakim
2007-08-19  0:45               ` Richard Stallman
2007-08-19 12:35                 ` joakim
2007-08-19 22:30                   ` Richard Stallman
2007-08-20  9:31                     ` joakim
2007-08-21 14:45                       ` Richard Stallman
2007-08-21 14:59                         ` joakim
2007-08-22  4:12                           ` Glenn Morris
2007-08-22  7:23                             ` joakim
2007-08-29 16:27                             ` svn icons in the toolbar (was: SVG support(again) ?) Leo
2007-08-30  5:08                               ` svn icons in the toolbar Jan Djärv
2007-08-30 20:44                                 ` Leo
2007-08-31  5:59                                   ` Jan Djärv
2007-08-31  7:07                                   ` Benjamin Hawkes-Lewis
2007-09-01 13:57                                     ` Leo
2007-08-30 20:50                                 ` Richard Stallman
2007-09-02  0:33                                   ` Leo
2007-09-03  3:04                                     ` Richard Stallman
2007-09-03  6:26                                       ` Jan Djärv
2007-09-04  0:56                                         ` Richard Stallman
2007-09-03  7:08                                       ` Benjamin Hawkes-Lewis
2007-09-03  7:53                                         ` joakim
2007-09-03  7:55                                           ` Leo
2007-09-03 17:38                                           ` David Reitter
2007-09-04  0:56                                         ` Richard Stallman
2007-09-04  4:01                                           ` tomas
2007-09-04 22:57                                             ` Richard Stallman
2007-09-05  3:31                                               ` tomas
2007-09-04  4:54                                           ` YAMAMOTO Mitsuharu
2007-09-04  6:06                                             ` David Kastrup
2007-09-04 22:57                                             ` Richard Stallman
2007-09-05  0:20                                               ` YAMAMOTO Mitsuharu
2007-09-05 20:02                                                 ` Richard Stallman
2007-09-05 20:40                                                   ` Chong Yidong
2007-09-05 22:54                                                   ` Leo
2007-09-06  6:02                                                     ` Jan Djärv
2007-09-06  6:00                                                   ` Jan Djärv
2007-09-07  6:32                                                     ` Richard Stallman
2007-09-07  7:04                                                       ` Leo
2007-09-07  8:12                                                         ` Jan Djärv
2007-09-07 10:22                                                           ` Leo
2007-09-08  7:01                                                         ` Richard Stallman
2007-09-07  7:10                                                       ` Jan Djärv
2007-09-08  7:00                                                         ` Richard Stallman
2007-09-03  7:54                                       ` Leo
2007-09-02  4:32                                 ` Leo
2007-09-02  8:07                                   ` Benjamin Hawkes-Lewis
2007-09-02  9:04                                     ` Jan Djärv
2007-09-02  8:23                                   ` Jan Djärv
2007-09-02  9:06                                     ` Leo
2007-09-02 13:29                                       ` Jan Djärv
2007-09-02 13:52                                         ` Leo
2007-09-02 14:04                                         ` Redundant icon in tool-bar (was: svn icons in the toolbar) Leo
2007-09-02 15:39                                           ` Redundant icon in tool-bar Jan Djärv
2007-09-02 16:00                                             ` Leo
2007-09-02 14:09                                         ` svn icons in the toolbar Leo
2007-09-02 15:43                                           ` Jan Djärv
2007-09-02 16:00                                             ` Leo
2007-09-02 17:28                                               ` Jan Djärv
2007-09-05 23:53                                                 ` Leo
2007-09-26 20:11                                                   ` gmm-tool-bar-style (was: svn icons in the toolbar) Reiner Steib
2007-09-02 17:46                                         ` svn icons in the toolbar Jan Djärv
2007-09-02 17:58                                           ` Leo
2007-09-21 10:24                                             ` Leo
2007-09-21 11:13                                               ` Jan Djärv
2007-09-21 11:17                                                 ` Leo
2007-09-21 12:08                                                   ` Jan Djärv
2007-09-21 12:45                                                     ` Leo
2007-09-21 13:08                                                       ` Jan Djärv
2007-09-21 14:18                                                         ` Leo
2007-09-21 15:14                                                           ` Jan Djärv
2007-09-21 16:03                                                             ` Leo
2007-09-18 21:55                                           ` Stephen Berman
2007-09-19  6:26                                             ` Jan Djärv
2007-09-19  9:10                                               ` Stephen Berman
2007-09-19  9:20                                               ` Stephen Berman
2007-09-19  9:54                                                 ` Leo
2007-09-19 10:08                                                   ` Jan Djärv
2007-09-19 10:40                                                   ` Stephen Berman
2007-09-19 10:02                                                 ` Jan Djärv
2007-09-19 10:41                                                   ` Stephen Berman
2007-09-20 16:35                                                 ` Richard Stallman
2007-09-24 15:56                                                   ` Stephen Berman
2007-09-25 10:44                                                     ` Richard Stallman
2007-09-25 11:43                                                       ` Frank Schmitt
2007-09-25 13:54                                                         ` Stephen Berman
2007-09-26  6:17                                                           ` Jan Djärv
2007-09-26 16:29                                                             ` Richard Stallman
2007-09-26 16:43                                                     ` Dan Nicolaescu
2007-09-19 21:22                                               ` Stephen Berman
2007-09-20  6:24                                                 ` Jan Djärv
2007-09-24 15:56                                                   ` Stephen Berman
2007-09-24 16:04                                                     ` Jan Djärv
2007-11-04 13:24                                                 ` Stephen Berman

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.