Add support for --get and --set to cap_options (gnome_capplet_init): Add

2000-08-16  Bradford Hovinen  <hovinen@helixcode.com>

	* capplet-widget.c: Add support for --get and --set to cap_options
	(gnome_capplet_init): Add return values 3 for --get and 4 for --set

2000-08-16  Bradford Hovinen  <hovinen@helixcode.com>

	* rc-parse.c (write_screensaver_list): Don't try to write string
	if the screensaver has no command line

	* main.c (main): Register Popt table containing get and set
	options; call do_get_xml and do_set_xml when necessary
	(do_get_xml):
	(do_set_xml): Implement
This commit is contained in:
Bradford Hovinen 2000-08-16 22:40:02 +00:00 committed by Bradford Hovinen (Gdict maintainer)
parent a92e2e6423
commit d24a6c7b67
5 changed files with 274 additions and 3 deletions

View file

@ -28,6 +28,9 @@
#include <gtk/gtk.h>
#include <gnome.h>
#include <libgnomeui/gnome-window-icon.h>
#include <tree.h>
#include <parser.h>
#include <xmlIO.h>
#include <glade/glade.h>
@ -45,6 +48,8 @@ static PrefsWidget *prefs_widget;
static CappletWidget *capplet;
static gboolean do_get, do_set;
static void
state_changed_cb (GtkWidget *widget)
{
@ -179,6 +184,50 @@ setup_capplet_widget (void)
prefs->frozen = FALSE;
}
static void
do_get_xml (void)
{
Preferences *prefs;
xmlDocPtr doc;
prefs = preferences_new ();
preferences_load (prefs);
doc = preferences_write_xml (prefs);
xmlDocDump (stdout, doc);
preferences_destroy (prefs);
}
static void
do_set_xml (void)
{
Preferences *prefs;
xmlDocPtr doc;
Preferences *old_prefs, *new_prefs;
char *buffer;
int len = 0;
while (!feof (stdin)) {
if (!len) buffer = g_new (char, 16384);
else buffer = g_renew (char, buffer, len + 16384);
fread (buffer + len, 1, 16384, stdin);
len += 16384;
}
doc = xmlParseMemory (buffer, strlen (buffer));
old_prefs = preferences_new ();
preferences_load (old_prefs);
new_prefs = preferences_read_xml (doc);
if (new_prefs) {
new_prefs->config_db = old_prefs->config_db;
preferences_save (new_prefs);
} else {
g_warning ("Error while reading the screensaver config file");
}
}
int
main (int argc, char **argv)
{
@ -197,6 +246,14 @@ main (int argc, char **argv)
if (res < 0) {
g_error ("Could not initialize the capplet.");
}
else if (res == 3) {
do_get_xml ();
return 0;
}
else if (res == 4) {
do_set_xml ();
return 0;
}
client = gnome_master_client ();
flags = gnome_client_get_flags (client);