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:
parent
0496f98555
commit
1d840a3813
158 changed files with 2083 additions and 354 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue