Install all pixmaps. (pixmaps_DATA): Add blank-screen.png.

2001-08-09  Richard Hestilow  <hestilow@ximian.com>

	* Makeflie.am (EXTRA_DIST): Install all pixmaps.
	(pixmaps_DATA): Add blank-screen.png.

	* pref-file.c: Replace "programs" value with a regenerated
	string.
	(print_aligned_row): Added.
	(print_list_to_str): Added.

	* preferences.h (Screensaver): Add new fields "filename",
	"compat_command_line", "fakepreview", and "fakes",
	to deal with the new xml storage.
	(Preferences): Add new fields "savers_hash" and "invalidsavers".

	* preferences.c (screensaver_list_prepend_dir): Added.
	(screensaver_cmp_func): Added.
	(screensaver_list_load): Added.
	(preferences_new): Initialize savers_hash.
	(clean_saver_list): Added.
	(preferences_load): Load screensavers from xml.
	(parse_arg_default): Added.
	(screensaver_read_xml): Updated for the new format.
	(screensaver_new_from_file): Added.

	* prefs-widget.c (double_click_cb): Added.
	(): Remove right click menu, add double click handler.
	(model_is_cell_editable): Fix for etable bug.
	(random_timeout_cb): Avoid vidwhacker and webcollage.
	* preview.c: Optionally show fakepreview if set, and
	deal with compat_command_line, and refresh pixbufs.
	(command_exists): Renamed to rc_command_exists.

	* rc-parse.c: (parse_screensaver_list): Merely update
	the existing entries, via the provided hash.

	* screensaver-prefs-dialog.c (get_argument_data): Just
	find the xml file using ::filename.

	* screensavers/magic.pl.in: Added.
	* screensavers/Makefile.am: Generate .xml.h files for translators,
	and install all .xml files and .png files, and run magic.pl on
	make install.
This commit is contained in:
Richard Hestilow 2001-08-10 03:36:17 +00:00 committed by Rachel Hestilow
parent 0496f98555
commit 1d840a3813
158 changed files with 2083 additions and 354 deletions

View file

@ -417,6 +417,115 @@ write_preference_cb (gchar *key, gchar *value, FILE *out)
return FALSE;
}
static gchar*
print_aligned_row (const gchar *lbl, const gchar *cmd, gboolean enabled)
{
int len;
int ntab, nspc;
gchar *tab, *spc;
gchar *buf;
len = strlen (lbl) + 2; /* Quotes */
ntab = (30 - len) / 8;
nspc = (30 - len) % 8;
tab = g_strnfill (ntab, '\t');
spc = g_strnfill (nspc, ' ');
buf = g_strdup_printf ("%s%s%s\"%s\" %s\n",
(enabled) ? "" : "-",
tab, spc,
lbl, cmd);
g_free (tab);
g_free (spc);
return buf;
}
static gchar*
print_list_to_str (Preferences *prefs)
{
gchar *lbl, *cmd, *buf;
gchar *ret;
Screensaver *saver;
GList *l, *fake;
GString *s;
gboolean enabled;
s = g_string_new ("");
for (l = prefs->screensavers; l != NULL; l = l->next)
{
saver = l->data;
if (saver->command_line)
cmd = saver->command_line;
else if (saver->compat_command_line)
cmd = saver->compat_command_line;
else
continue;
if (prefs->selection_mode == SM_CHOOSE_RANDOMLY)
{
/* I wouldn't want these running unless I'd
* explicitly enabled them */
if (!strcmp (saver->name, "webcollage")
|| !strcmp (saver->name, "vidwhacker"))
enabled = FALSE;
else
enabled = TRUE;
}
else
enabled = saver->enabled;
if (saver->label)
lbl = saver->label;
else
lbl = saver->name;
buf = print_aligned_row (lbl, cmd, enabled);
g_string_append (s, buf);
g_free (buf);
for (fake = saver->fakes; fake != NULL; fake = fake->next)
{
buf = print_aligned_row (fake->data, cmd, FALSE);
g_string_append (s, buf);
g_free (buf);
}
}
for (l = prefs->invalidsavers; l != NULL; l = l->next)
{
saver = l->data;
if (saver->command_line)
cmd = saver->command_line;
else if (saver->compat_command_line)
cmd = saver->compat_command_line;
else
cmd = "/bin/true";
if (saver->label)
lbl = saver->label;
else
lbl = saver->name;
buf = print_aligned_row (lbl, cmd, FALSE);
g_string_append (s, buf);
g_free (buf);
for (fake = saver->fakes; fake != NULL; fake = fake->next)
{
buf = print_aligned_row (fake->data, cmd, FALSE);
g_string_append (s, buf);
g_free (buf);
}
}
ret = s->str;
g_string_free (s, FALSE);
return ret;
}
/* Adapted from xscreensaver 3.24 driver/prefs.c line 537 ... */
gint
@ -427,6 +536,7 @@ preferences_save_to_file (Preferences *prefs)
const char *tmp_name = init_file_tmp_name();
char *n2 = chase_symlinks (name);
struct stat st;
gchar *progs, *oldprogs;
FILE *out;
@ -485,6 +595,15 @@ preferences_save_to_file (Preferences *prefs)
"XScreenSaver", "xscreensaver", "3.24", whoami, timestr);
}
/* Ok this is lame, but it is easier than rewriting stuff */
progs = print_list_to_str (prefs);
oldprogs = g_tree_lookup (prefs->config_db, "programs");
/* Is this the right way of doing it? */
g_tree_remove (prefs->config_db, "programs");
if (oldprogs)
g_free (oldprogs);
g_tree_insert (prefs->config_db, "programs", progs);
g_tree_traverse (prefs->config_db,
(GTraverseFunc) write_preference_cb,
G_IN_ORDER, out);