ftp://ftp.jp.xemacs.org/pub/NetBSD/packages/distfiles/xscreensaver-4.15.tar.gz
[xscreensaver] / driver / demo-Gtk-conf.c
index 608e488c898e225617434fa03258e1d7a50f2cb2..6416e6ce99906f243e579471acf41e1cd1d18cb5 100644 (file)
@@ -1,5 +1,5 @@
 /* demo-Gtk-conf.c --- implements the dynamic configuration dialogs.
- * xscreensaver, Copyright (c) 2001, 2003 Jamie Zawinski <jwz@jwz.org>
+ * xscreensaver, Copyright (c) 2001, 2003, 2004 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
@@ -1433,8 +1433,8 @@ parse_command_line_into_parameters_1 (const char *filename,
 {
   GList *p;
   parameter *match = 0;
-  int which = -1;
-  int index = 0;
+  gint which = -1;
+  gint index = 0;
 
   for (p = parms; p; p = p->next)
     {
@@ -1502,11 +1502,11 @@ parse_command_line_into_parameters_1 (const char *filename,
       break;
     case BOOLEAN:
       if (which != 0 && which != 1) abort();
-      parameter_set_switch (match, (gpointer) which);
+      parameter_set_switch (match, GINT_TO_POINTER(which));
       break;
     case SELECT_OPTION:
       if (which != 1) abort();
-      parameter_set_switch (parent, (gpointer) index);
+      parameter_set_switch (parent, GINT_TO_POINTER(index));
       break;
     default:
       break;
@@ -1553,13 +1553,13 @@ parameter_set_switch (parameter *p, gpointer value)
     case BOOLEAN:
       {
         GtkToggleButton *b = GTK_TOGGLE_BUTTON (p->widget);
-        gtk_toggle_button_set_active (b, (int) value);
+        gtk_toggle_button_set_active (b, GPOINTER_TO_INT(value));
         break;
       }
     case SELECT:
       {
         gtk_option_menu_set_history (GTK_OPTION_MENU (p->widget),
-                                     (int) value);
+                                     GPOINTER_TO_INT(value));
         break;
       }
     default:
@@ -1642,7 +1642,7 @@ restore_defaults (const char *progname, GList *parms)
  */
 
 static char *
-get_description (GList *parms)
+get_description (GList *parms, gboolean verbose_p)
 {
   parameter *doc = 0;
   for (; parms; parms = parms->next)
@@ -1661,6 +1661,7 @@ get_description (GList *parms)
     {
       char *d = strdup ((char *) doc->string);
       char *s;
+      char *p;
       for (s = d; *s; s++)
         if (s[0] == '\n')
           {
@@ -1687,7 +1688,27 @@ get_description (GList *parms)
           d[--L] = 0;
       }
 
-      return _(d);
+      /* strip off duplicated whitespaces */
+      for (s = d; *s; s++)
+         if (s[0] == ' ')
+         {
+           p = s+1;
+           while (*s == ' ')
+             s++;
+            if (*p && (s != p))
+              memmove (p, s, strlen(s)+1);
+         }
+
+#if 0
+      if (verbose_p)
+        {
+          fprintf (stderr, "%s: text read   is \"%s\"\n", blurb(),doc->string);
+          fprintf (stderr, "%s: description is \"%s\"\n", blurb(), d);
+          fprintf (stderr, "%s: translation is \"%s\"\n", blurb(), _(d));
+        }
+#endif /* 0 */
+
+      return (d);
     }
 }
 
@@ -1771,7 +1792,7 @@ load_configurator_1 (const char *program, const char *arguments,
 
       data->widget = table;
       data->parameters = parms;
-      data->description = get_description (parms);
+      data->description = get_description (parms, verbose_p);
     }
   else
     {