From 4f9a20c63e4e625ce5f4b3a8f7c11c4ba1fe2387 Mon Sep 17 00:00:00 2001 From: Bradford Hovinen Date: Wed, 24 Jan 2001 18:17:57 +0000 Subject: [PATCH] Added rollback capplet, compile disabled by default 2001-01-24 Bradford Hovinen Added rollback capplet, compile disabled by default --- capplets/rollback/ChangeLog | 7 + capplets/rollback/Makefile.am | 36 + capplets/rollback/config-manager-dialog.c | 468 +++++++++++++ capplets/rollback/config-manager-dialog.h | 64 ++ capplets/rollback/main.c | 53 ++ capplets/rollback/rollback-widget.c | 167 +++++ capplets/rollback/rollback-widget.h | 61 ++ capplets/rollback/rollback.glade | 776 ++++++++++++++++++++++ 8 files changed, 1632 insertions(+) create mode 100644 capplets/rollback/ChangeLog create mode 100644 capplets/rollback/Makefile.am create mode 100644 capplets/rollback/config-manager-dialog.c create mode 100644 capplets/rollback/config-manager-dialog.h create mode 100644 capplets/rollback/main.c create mode 100644 capplets/rollback/rollback-widget.c create mode 100644 capplets/rollback/rollback-widget.h create mode 100644 capplets/rollback/rollback.glade diff --git a/capplets/rollback/ChangeLog b/capplets/rollback/ChangeLog new file mode 100644 index 000000000..7ff73c800 --- /dev/null +++ b/capplets/rollback/ChangeLog @@ -0,0 +1,7 @@ +2001-01-18 Bradford Hovinen + + * config-manager-dialog.c (do_rollback): Rewrite, add boolean + rollback_to_last to signature + + * config-manager-dialog.h: Change base class to CappletWidget + diff --git a/capplets/rollback/Makefile.am b/capplets/rollback/Makefile.am new file mode 100644 index 000000000..8997d21f2 --- /dev/null +++ b/capplets/rollback/Makefile.am @@ -0,0 +1,36 @@ +Applicationsdir = $(datadir)/control-center/Desktop +Applications_DATA = \ + rollback.desktop + +pApplicationsdir = $(datadir)/gnome/apps/Settings/Desktop +pApplications_DATA = \ + rollback.desktop + +Gladedir = $(datadir)/control-center-data +Glade_DATA = \ + rollback.glade + +glade_msgs = \ + rollback.glade.h + +EXTRA_DIST = $(Applications_DATA) $(Glade_DATA) $(glade_msgs) + +INCLUDES = \ + -DGNOMELOCALEDIR=\""$(datadir)/locale"\" \ + -DGNOME_ICONDIR=\""${prefix}/share/pixmaps"\" \ + -DG_LOG_DOMAIN=\"background-properties\" \ + -DGLADE_DATADIR=\""$(Gladedir)"\" \ + $(GNOME_INCLUDEDIR) \ + $(CAPPLET_CFLAGS) \ + -I$(top_srcdir)/ \ + -I$(top_srcdir)/intl + +bin_PROGRAMS = rollback-capplet + +rollback_capplet_SOURCES = \ + config-manager-dialog.c config-manager-dialog.h \ + rollback-widget.c rollback-widget.h \ + main.c + +rollback_capplet_LDADD = \ + $(GNOME_LIBDIR) $(CAPPLET_LIBS) diff --git a/capplets/rollback/config-manager-dialog.c b/capplets/rollback/config-manager-dialog.c new file mode 100644 index 000000000..a70557c5e --- /dev/null +++ b/capplets/rollback/config-manager-dialog.c @@ -0,0 +1,468 @@ +/* -*- mode: c; style: linux -*- */ + +/* config-manager-dialog.c + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Written by Bradford Hovinen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#include + +#include + +#include "config-manager-dialog.h" +#include "create-location-dialog.h" +#include "archive.h" +#include "location.h" +#include "backend-list.h" +#include "location-list.h" + +#define WID(str) (glade_xml_get_widget (dialog->p->config_dialog_data, str)) + +enum { + ARG_0, + ARG_TYPE +}; + +struct _ConfigManagerDialogPrivate +{ + GladeXML *config_dialog_data; + + CMDialogType type; + + struct tm *date; + gboolean rollback_all; + gchar *backend_id; + + Archive *archive; + BackendList *backend_list; + Location *current_location; +}; + +static GnomeDialogClass *parent_class; + +static void config_manager_dialog_init (ConfigManagerDialog *dialog); +static void config_manager_dialog_class_init (ConfigManagerDialogClass *class); + +static void config_manager_dialog_set_arg (GtkObject *object, + GtkArg *arg, + guint arg_id); +static void config_manager_dialog_get_arg (GtkObject *object, + GtkArg *arg, + guint arg_id); + +static void config_manager_dialog_finalize (GtkObject *object); + +static void ok_cb (GtkWidget *widget, + ConfigManagerDialog *dialog); +static void apply_cb (GtkWidget *widget, + ConfigManagerDialog *dialog); +static void cancel_cb (GtkWidget *widget, + ConfigManagerDialog *dialog); +static void time_count_changed_cb (GtkSpinButton *button, + ConfigManagerDialog *dialog); +static void rollback_all_toggled_cb (GtkToggleButton *button, + ConfigManagerDialog *dialog); +static void rollback_one_toggled_cb (GtkToggleButton *button, + ConfigManagerDialog *dialog); +static void backend_select_cb (GtkMenuItem *menu_item, + ConfigManagerDialog *dialog); + +static void do_rollback (ConfigManagerDialog *dialog, + gboolean rollback_to_last); +static void reset_time (ConfigManagerDialog *dialog, + guint sub_days); +static gint populate_backends_cb (BackendList *list, + gchar *backend_id, + ConfigManagerDialog *dialog); +static void populate_backends_list (ConfigManagerDialog *dialog, + BackendList *list); + +static void set_backend_controls_sensitive (ConfigManagerDialog *dialog, + gboolean s); + +guint +config_manager_dialog_get_type (void) +{ + static guint config_manager_dialog_type = 0; + + if (!config_manager_dialog_type) { + GtkTypeInfo config_manager_dialog_info = { + "ConfigManagerDialog", + sizeof (ConfigManagerDialog), + sizeof (ConfigManagerDialogClass), + (GtkClassInitFunc) config_manager_dialog_class_init, + (GtkObjectInitFunc) config_manager_dialog_init, + (GtkArgSetFunc) NULL, + (GtkArgGetFunc) NULL + }; + + config_manager_dialog_type = + gtk_type_unique (gnome_dialog_get_type (), + &config_manager_dialog_info); + } + + return config_manager_dialog_type; +} + +static void +config_manager_dialog_init (ConfigManagerDialog *dialog) +{ + static char *buttons[] = { + GNOME_STOCK_BUTTON_OK, + GNOME_STOCK_BUTTON_APPLY, + GNOME_STOCK_BUTTON_CANCEL, + NULL + }; + + gnome_dialog_constructv (GNOME_DIALOG (dialog), + _("Rollback and Location Management"), + buttons); + + dialog->p = g_new0 (ConfigManagerDialogPrivate, 1); + dialog->p->config_dialog_data = + glade_xml_new (GLADE_DIR "/rollback.glade", + "config_dialog_data"); + + gtk_box_pack_start (GTK_BOX + (GNOME_DIALOG (dialog)->vbox), + WID ("config_dialog_data"), 0, TRUE, TRUE); + + gtk_window_set_policy (GTK_WINDOW (dialog), + TRUE, FALSE, TRUE); + + gnome_dialog_button_connect (GNOME_DIALOG (dialog), + 0, GTK_SIGNAL_FUNC (ok_cb), + dialog); + gnome_dialog_button_connect (GNOME_DIALOG (dialog), + 1, GTK_SIGNAL_FUNC (apply_cb), + dialog); + gnome_dialog_button_connect (GNOME_DIALOG (dialog), + 2, GTK_SIGNAL_FUNC (cancel_cb), + dialog); + + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "time_count_changed_cb", + time_count_changed_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "rollback_all_toggled_cb", + rollback_all_toggled_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "rollback_one_toggled_cb", + rollback_one_toggled_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "create_cb", + create_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "rename_cb", + rename_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "destroy_cb", + destroy_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "change_location_cb", + change_location_cb, + dialog); + glade_xml_signal_connect_data (dialog->p->config_dialog_data, + "edit_location_cb", + edit_location_cb, + dialog); + + dialog->p->rollback_all = TRUE; + dialog->p->date = g_new (struct tm, 1); + + gtk_widget_show (GTK_WIDGET (dialog->p->location_list)); + gtk_container_add (GTK_CONTAINER (WID ("location_tree_location")), + GTK_WIDGET (dialog->p->location_list)); + + set_backend_controls_sensitive (dialog, FALSE); + reset_time (dialog, 0); +} + +static void +config_manager_dialog_class_init (ConfigManagerDialogClass *class) +{ + GtkObjectClass *object_class; + + gtk_object_add_arg_type ("ConfigManagerDialog::type", + GTK_TYPE_INT, + GTK_ARG_CONSTRUCT_ONLY | GTK_ARG_READWRITE, + ARG_TYPE); + + object_class = GTK_OBJECT_CLASS (class); + object_class->finalize = config_manager_dialog_finalize; + object_class->set_arg = config_manager_dialog_set_arg; + object_class->get_arg = config_manager_dialog_get_arg; + + parent_class = GNOME_DIALOG_CLASS + (gtk_type_class (gnome_dialog_get_type ())); +} + +static void +config_manager_dialog_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) +{ + ConfigManagerDialog *dialog; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (object)); + + dialog = CONFIG_MANAGER_DIALOG (object); + + switch (arg_id) { + case ARG_TYPE: + dialog->p->type = GTK_VALUE_INT (*arg); + + switch (dialog->p->type) { + case CM_DIALOG_USER: + dialog->p->archive = ARCHIVE (archive_load (FALSE)); + break; + + case CM_DIALOG_GLOBAL: + dialog->p->archive = ARCHIVE (archive_load (TRUE)); + break; + } + + dialog->p->backend_list = + archive_get_backend_list (dialog->p->archive); + dialog->p->current_location = + archive_get_current_location (dialog->p->archive); + populate_backends_list (dialog, dialog->p->user_list); + + break; + + default: + g_warning ("Bad argument set"); + break; + } +} + +static void +config_manager_dialog_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) +{ + ConfigManagerDialog *dialog; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (object)); + + dialog = CONFIG_MANAGER_DIALOG (object); + + switch (arg_id) { + case ARG_TYPE: + GTK_VALUE_INT (*arg) = dialog->p->type; + break; + + default: + g_warning ("Bad argument get"); + break; + } +} + +static void +config_manager_dialog_finalize (GtkObject *object) +{ + ConfigManagerDialog *dialog; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (object)); + + dialog = CONFIG_MANAGER_DIALOG (object); + + if (dialog->p->date != NULL) + g_free (dialog->p->date); + + if (dialog->p->type == CM_DIALOG_USER_ONLY || + dialog->p->type == CM_DIALOG_BOTH) + { + gtk_object_unref (GTK_OBJECT (dialog->p->current_user)); + gtk_object_unref (GTK_OBJECT (dialog->p->user_list)); + gtk_object_unref (GTK_OBJECT (dialog->p->user_archive)); + } + + if (dialog->p->type == CM_DIALOG_GLOBAL_ONLY || + dialog->p->type == CM_DIALOG_BOTH) + { + gtk_object_unref (GTK_OBJECT (dialog->p->current_global)); + gtk_object_unref (GTK_OBJECT (dialog->p->global_list)); + gtk_object_unref (GTK_OBJECT (dialog->p->global_archive)); + } + + g_free (dialog->p); + + GTK_OBJECT_CLASS (parent_class)->finalize (object); +} + +GtkWidget * +config_manager_dialog_new (CMDialogType type) +{ + return gtk_widget_new (config_manager_dialog_get_type (), + "type", type, + NULL); +} + +static void +ok_cb (GtkWidget *widget, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + do_rollback (dialog, FALSE); + + gnome_dialog_close (GNOME_DIALOG (dialog)); +} + +static void +apply_cb (GtkWidget *widget, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + do_rollback (dialog, FALSE); +} + +static void +cancel_cb (GtkWidget *widget, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + do_rollback (dialog, TRUE); + + gnome_dialog_close (GNOME_DIALOG (dialog)); +} + +static void +time_count_changed_cb (GtkSpinButton *button, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + reset_time (dialog, gtk_spin_button_get_value_as_int (button)); +} + +static void +rollback_all_toggled_cb (GtkToggleButton *button, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + if (gtk_toggle_button_get_active (button)) { + dialog->p->rollback_all = TRUE; + set_backend_controls_sensitive (dialog, FALSE); + } +} + +static void +rollback_one_toggled_cb (GtkToggleButton *button, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + if (gtk_toggle_button_get_active (button)) { + dialog->p->rollback_all = FALSE; + set_backend_controls_sensitive (dialog, TRUE); + } +} + +static void +backend_select_cb (GtkMenuItem *menu_item, ConfigManagerDialog *dialog) +{ + g_return_if_fail (dialog != NULL); + g_return_if_fail (IS_CONFIG_MANAGER_DIALOG (dialog)); + + dialog->p->backend_id = gtk_object_get_data (GTK_OBJECT (menu_item), + "backend-id"); +} + +static void +do_rollback (ConfigManagerDialog *dialog, gboolean rollback_to_last) +{ + if (rollback_to_last) { + if (dialog->p->rollback_all) + location_rollback_all_to + (dialog->p->current_location, NULL, TRUE); + else + location_rollback_backend_by + (dialog->p->current_location, 0, + dialog->p->backend_id, TRUE); + } else { + if (dialog->p->rollback_all) + location_rollback_all_to + (dialog->p->current_location, + dialog->p->date, TRUE); + else + location_rollback_backend_to + (dialog->p->current_location, + dialog->p->date, + dialog->p->backend_id, TRUE); + } +} + +static void +reset_time (ConfigManagerDialog *dialog, guint sub_days) +{ + time_t current_time; + + time (¤t_time); + current_time -= sub_days * 24 * 60 * 60; + localtime_r (¤t_time, dialog->p->date); +} + +static gint +populate_backends_cb (BackendList *list, gchar *backend_id, + ConfigManagerDialog *dialog) +{ + GtkWidget *menu_item; + GtkWidget *menu; + + menu_item = gtk_menu_item_new_with_label (backend_id); + gtk_widget_show (menu_item); + gtk_object_set_data (GTK_OBJECT (menu_item), + "backend-id", backend_id); + gtk_signal_connect (GTK_OBJECT (menu_item), "activate", + GTK_SIGNAL_FUNC (backend_select_cb), dialog); + + menu = gtk_option_menu_get_menu + (GTK_OPTION_MENU (WID ("backend_select"))); + gtk_menu_append (GTK_MENU (menu), menu_item); + return 0; +} + +static void +populate_backends_list (ConfigManagerDialog *dialog, BackendList *list) +{ + backend_list_foreach (list, (BackendCB) populate_backends_cb, dialog); + + gtk_option_menu_set_history + (GTK_OPTION_MENU (WID ("backend_select")), 0); +} + +static void +set_backend_controls_sensitive (ConfigManagerDialog *dialog, gboolean s) +{ + gtk_widget_set_sensitive (WID ("backend_select"), s); +} diff --git a/capplets/rollback/config-manager-dialog.h b/capplets/rollback/config-manager-dialog.h new file mode 100644 index 000000000..904bc1ea3 --- /dev/null +++ b/capplets/rollback/config-manager-dialog.h @@ -0,0 +1,64 @@ +/* -*- mode: c; style: linux -*- */ + +/* config-manager-dialog.h + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Written by Bradford Hovinen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifndef __CONFIG_MANAGER_DIALOG_H +#define __CONFIG_MANAGER_DIALOG_H + +#include +#include + +BEGIN_GNOME_DECLS + +#define CONFIG_MANAGER_DIALOG(obj) GTK_CHECK_CAST (obj, config_manager_dialog_get_type (), ConfigManagerDialog) +#define CONFIG_MANAGER_DIALOG_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, config_manager_dialog_get_type (), ConfigManagerDialogClass) +#define IS_CONFIG_MANAGER_DIALOG(obj) GTK_CHECK_TYPE (obj, config_manager_dialog_get_type ()) + +typedef struct _ConfigManagerDialog ConfigManagerDialog; +typedef struct _ConfigManagerDialogClass ConfigManagerDialogClass; +typedef struct _ConfigManagerDialogPrivate ConfigManagerDialogPrivate; + +typedef enum _CMDialogType CMDialogType; + +struct _ConfigManagerDialog +{ + CappletWidget parent; + + ConfigManagerDialogPrivate *p; +}; + +struct _ConfigManagerDialogClass +{ + CappletWidgetClass gnome_dialog_class; +}; + +enum _CMDialogType { + CM_DIALOG_USER, CM_DIALOG_GLOBAL +}; + +guint config_manager_dialog_get_type (void); + +GtkWidget *config_manager_dialog_new (CMDialogType type); + +END_GNOME_DECLS + +#endif /* __CONFIG_MANAGER_DIALOG_H */ diff --git a/capplets/rollback/main.c b/capplets/rollback/main.c new file mode 100644 index 000000000..cf34d3fcf --- /dev/null +++ b/capplets/rollback/main.c @@ -0,0 +1,53 @@ +/* -*- mode: c; style: linux -*- */ + +/* config-manager.c + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Written by Bradford Hovinen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include +#include + +#include "config-manager-dialog.h" + +int +main (int argc, char **argv) +{ + GtkWidget *dialog; + + bindtextdomain (PACKAGE, GNOMELOCALEDIR); + textdomain (PACKAGE); + + gnome_init ("config-manager", VERSION, argc, argv); + glade_gnome_init (); + + dialog = config_manager_dialog_new (CM_DIALOG_USER_ONLY); + gtk_widget_show (dialog); + + gtk_signal_connect (GTK_OBJECT (dialog), "destroy", + gtk_main_quit, NULL); + + gtk_main (); + + return 0; +} diff --git a/capplets/rollback/rollback-widget.c b/capplets/rollback/rollback-widget.c new file mode 100644 index 000000000..663bb0fbb --- /dev/null +++ b/capplets/rollback/rollback-widget.c @@ -0,0 +1,167 @@ +/* -*- mode: c; style: linux -*- */ + +/* rollback-widget.c + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Written by Bradford Hovinen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifdef HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef HAVE_LIBARCHIVER + +#include "rollback-widget.h" + +enum { + ARG_0, + ARG_SAMPLE +}; + +struct _RollbackWidgetPrivate +{ + /* Private data members */ +}; + +static GtkWidgetClass *parent_class; + +static void rollback_widget_init (RollbackWidget *rollback_widget); +static void rollback_widget_class_init (RollbackWidgetClass *class); + +static void rollback_widget_set_arg (GtkObject *object, + GtkArg *arg, + guint arg_id); +static void rollback_widget_get_arg (GtkObject *object, + GtkArg *arg, + guint arg_id); + +static void rollback_widget_finalize (GtkObject *object); + +guint +rollback_widget_get_type (void) +{ + static guint rollback_widget_type = 0; + + if (!rollback_widget_type) { + GtkTypeInfo rollback_widget_info = { + "RollbackWidget", + sizeof (RollbackWidget), + sizeof (RollbackWidgetClass), + (GtkClassInitFunc) rollback_widget_class_init, + (GtkObjectInitFunc) rollback_widget_init, + (GtkArgSetFunc) NULL, + (GtkArgGetFunc) NULL + }; + + rollback_widget_type = + gtk_type_unique (gtk_widget_get_type (), + &rollback_widget_info); + } + + return rollback_widget_type; +} + +static void +rollback_widget_init (RollbackWidget *rollback_widget) +{ + rollback_widget->p = g_new0 (RollbackWidgetPrivate, 1); +} + +static void +rollback_widget_class_init (RollbackWidgetClass *class) +{ + GtkObjectClass *object_class; + + gtk_object_add_arg_type ("RollbackWidget::sample", + GTK_TYPE_POINTER, + GTK_ARG_READWRITE, + ARG_SAMPLE); + + object_class = GTK_OBJECT_CLASS (class); + object_class->finalize = rollback_widget_finalize; + object_class->set_arg = rollback_widget_set_arg; + object_class->get_arg = rollback_widget_get_arg; + + parent_class = GTK_WIDGET_CLASS + (gtk_type_class (gtk_widget_get_type ())); +} + +static void +rollback_widget_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) +{ + RollbackWidget *rollback_widget; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_ROLLBACK_WIDGET (object)); + + rollback_widget = ROLLBACK_WIDGET (object); + + switch (arg_id) { + case ARG_SAMPLE: + break; + + default: + g_warning ("Bad argument set"); + break; + } +} + +static void +rollback_widget_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) +{ + RollbackWidget *rollback_widget; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_ROLLBACK_WIDGET (object)); + + rollback_widget = ROLLBACK_WIDGET (object); + + switch (arg_id) { + case ARG_SAMPLE: + break; + + default: + g_warning ("Bad argument get"); + break; + } +} + +static void +rollback_widget_finalize (GtkObject *object) +{ + RollbackWidget *rollback_widget; + + g_return_if_fail (object != NULL); + g_return_if_fail (IS_ROLLBACK_WIDGET (object)); + + rollback_widget = ROLLBACK_WIDGET (object); + + g_free (rollback_widget->p); + + GTK_OBJECT_CLASS (parent_class)->finalize (object); +} + +GtkObject * +rollback_widget_new (void) +{ + return gtk_object_new (rollback_widget_get_type (), + NULL); +} + +#endif HAVE_LIBARCHIVER diff --git a/capplets/rollback/rollback-widget.h b/capplets/rollback/rollback-widget.h new file mode 100644 index 000000000..b9d9f4371 --- /dev/null +++ b/capplets/rollback/rollback-widget.h @@ -0,0 +1,61 @@ +/* -*- mode: c; style: linux -*- */ + +/* rollback-widget.h + * Copyright (C) 2000-2001 Ximian, Inc. + * + * Written by Bradford Hovinen + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#ifndef __ROLLBACK_WIDGET_H +#define __ROLLBACK_WIDGET_H + +#ifdef HAVE_LIBARCHIVER + +#include + +BEGIN_GNOME_DECLS + +#define ROLLBACK_WIDGET(obj) GTK_CHECK_CAST (obj, rollback_widget_get_type (), RollbackWidget) +#define ROLLBACK_WIDGET_CLASS(klass) GTK_CHECK_CLASS_CAST (klass, rollback_widget_get_type (), RollbackWidgetClass) +#define IS_ROLLBACK_WIDGET(obj) GTK_CHECK_TYPE (obj, rollback_widget_get_type ()) + +typedef struct _RollbackWidget RollbackWidget; +typedef struct _RollbackWidgetClass RollbackWidgetClass; +typedef struct _RollbackWidgetPrivate RollbackWidgetPrivate; + +struct _RollbackWidget +{ + GtkWidget parent; + + RollbackWidgetPrivate *p; +}; + +struct _RollbackWidgetClass +{ + GtkWidgetClass gtk_widget_class; +}; + +guint rollback_widget_get_type (void); + +GtkObject *rollback_widget_new (void); + +END_GNOME_DECLS + +#endif /* HAVE_LIBARCHIVER */ + +#endif /* __ROLLBACK_WIDGET_H */ diff --git a/capplets/rollback/rollback.glade b/capplets/rollback/rollback.glade new file mode 100644 index 000000000..7f17cca48 --- /dev/null +++ b/capplets/rollback/rollback.glade @@ -0,0 +1,776 @@ + + + + + Rollback-location-management + rollback-location-management + + src + pixmaps + C + True + True + + + + GnomeDialog + rollback_location_dialog + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + True + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox1 + False + 8 + + 4 + True + True + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area1 + GTK_BUTTONBOX_END + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + button1 + True + True + GNOME_STOCK_BUTTON_OK + + + + GtkButton + button2 + True + True + GNOME_STOCK_BUTTON_APPLY + + + + GtkButton + button3 + True + True + GNOME_STOCK_BUTTON_CANCEL + + + + + GtkNotebook + notebook1 + True + True + True + GTK_POS_TOP + False + 2 + 2 + False + + 0 + True + True + + + + GtkTable + table1 + 5 + 4 + 2 + False + 5 + 5 + + + GtkRadioButton + rollback_all_toggle + True + + toggled + rollback_all_toggled_cb + Tue, 19 Dec 2000 20:58:48 GMT + + + False + True + restore_type + + 0 + 2 + 1 + 2 + 0 + 0 + False + False + False + False + True + False + + + + + GtkButton + button4 + True + + GTK_RELIEF_NORMAL + + 0 + 1 + 3 + 4 + 0 + 0 + False + False + False + False + True + False + + + + + GtkButton + button5 + True + + GTK_RELIEF_NORMAL + + 1 + 2 + 3 + 4 + 0 + 0 + False + False + False + False + True + False + + + + + GtkHBox + hbox2 + False + 0 + + 0 + 2 + 2 + 3 + 0 + 0 + False + False + False + False + True + True + + + + GtkRadioButton + rollback_one_toggle + True + + toggled + rollback_one_toggled_cb + Tue, 19 Dec 2000 20:58:59 GMT + + + False + True + restore_type + + 0 + False + False + + + + + GtkOptionMenu + backend_select + True + + 0 + + 0 + True + True + + + + + + GtkHBox + hbox1 + False + 5 + + 0 + 2 + 0 + 1 + 0 + 0 + True + False + False + False + True + True + + + + GtkLabel + label3 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkSpinButton + time_count + True + + changed + time_count_changed_cb + Tue, 19 Dec 2000 20:15:27 GMT + + 1 + 0 + False + GTK_UPDATE_ALWAYS + False + False + 1 + 0 + 1000 + 1 + 10 + 10 + + 0 + False + True + + + + + GtkLabel + label4 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + + + GtkLabel + Notebook:tab + label1 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + GtkHBox + location_tree_box + 5 + False + 5 + + + GtkVBox + vbox1 + False + 5 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + create_button + True + + clicked + create_cb + Wed, 20 Dec 2000 23:51:41 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkButton + destroy_button + True + + clicked + destroy_cb + Wed, 20 Dec 2000 23:51:56 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkButton + rename_button + True + + clicked + rename_cb + Wed, 20 Dec 2000 23:52:13 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkHSeparator + hseparator1 + + 0 + False + True + + + + + GtkButton + change_location_button + True + + clicked + change_location_cb + Wed, 20 Dec 2000 23:52:33 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + GtkButton + edit_button + True + + clicked + edit_location_cb + Wed, 20 Dec 2000 23:52:51 GMT + + + GTK_RELIEF_NORMAL + + 0 + False + False + + + + + + GtkScrolledWindow + location_tree_location + GTK_POLICY_NEVER + GTK_POLICY_AUTOMATIC + GTK_UPDATE_CONTINUOUS + GTK_UPDATE_CONTINUOUS + + 0 + True + True + GTK_PACK_END + + + + Placeholder + + + + + + GtkLabel + Notebook:tab + label2 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + + + + + + GnomeDialog + rollback_dialog + Restore old configuration + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + False + False + False + False + False + + + GtkVBox + GnomeDialog:vbox + dialog-vbox3 + False + 8 + + 4 + True + True + + + + GtkHButtonBox + GnomeDialog:action_area + dialog-action_area3 + GTK_BUTTONBOX_END + 8 + 85 + 27 + 7 + 0 + + 0 + False + True + GTK_PACK_END + + + + GtkButton + button14 + True + True + GNOME_STOCK_BUTTON_OK + + + + GtkButton + button15 + True + True + GNOME_STOCK_BUTTON_APPLY + + + + GtkButton + button16 + True + True + GNOME_STOCK_BUTTON_CANCEL + + + + + GtkVBox + config_dialog_data + False + 5 + + 0 + True + True + + + + GtkHBox + hbox4 + False + 5 + + 0 + True + True + + + + GtkLabel + label10 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + GtkSpinButton + spinbutton1 + True + + changed + time_count_changed_cb + Tue, 19 Dec 2000 20:15:27 GMT + + 1 + 0 + False + GTK_UPDATE_ALWAYS + False + False + 1 + 0 + 1000 + 1 + 10 + 10 + + 0 + False + True + + + + + GtkLabel + label11 + + GTK_JUSTIFY_CENTER + False + 0.5 + 0.5 + 0 + 0 + + 0 + False + False + + + + + + GtkTable + table2 + 2 + 2 + False + 5 + 0 + + 0 + True + True + + + + GtkRadioButton + rollback_all_toggle + True + + toggled + rollback_all_toggled_cb + Tue, 19 Dec 2000 20:58:48 GMT + + + False + True + restore_type + + 0 + 2 + 0 + 1 + 0 + 0 + True + False + False + False + True + False + + + + + GtkRadioButton + rollback_one_toggle + True + + toggled + rollback_one_toggled_cb + Tue, 19 Dec 2000 20:58:59 GMT + + + False + True + restore_type + + 0 + 1 + 1 + 2 + 0 + 0 + False + False + False + False + True + False + + + + + GtkOptionMenu + background_select + True + + 0 + + 1 + 2 + 1 + 2 + 0 + 0 + True + False + False + False + True + True + + + + + + GtkHBox + hbox6 + False + 5 + + 0 + True + True + + + + GtkButton + view_logs_button + True + + GTK_RELIEF_NORMAL + + 0 + True + True + + + + + GtkButton + advanced_button + True + + GTK_RELIEF_NORMAL + + 0 + True + True + + + + + + + +