Skip to content

Commit

Permalink
Enable backend once under Unix
Browse files Browse the repository at this point in the history
  • Loading branch information
David Mohr committed Aug 1, 2010
1 parent 4d4ffed commit 4fc81c7
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 2 deletions.
1 change: 1 addition & 0 deletions src/gchd-internal.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ struct _Gchd {
GchdMenu menu; GchdMenu menu;
gchar * default_entry; gchar * default_entry;
gchar * grub_dir; gchar * grub_dir;
gboolean once;


GchdSetDefaultCallback set_callback; GchdSetDefaultCallback set_callback;
gpointer set_callback_data; gpointer set_callback_data;
Expand Down
2 changes: 1 addition & 1 deletion src/gchd-menu.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ parse_entries (GchdMenu *menu, gchar * contents) {
/* matched "^menuentry */ /* matched "^menuentry */


c += strlen (mi); c += strlen (mi);
/* we expect at least one white space */


/* we expect at least one white space */
if (*c != ' ') if (*c != ' ')
continue; continue;
else else
Expand Down
5 changes: 4 additions & 1 deletion src/gchd-unix.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -142,7 +142,10 @@ set_default_entry (Gchd * gchd, gchar * entry, GError **error)
i = 0; i = 0;
} }


argv[i++] = "grub-set-default"; if (!gchd->once)
argv[i++] = "grub-set-default";
else
argv[i++] = "grub-reboot";
argv[i++] = entry; argv[i++] = entry;
argv[i++] = NULL; argv[i++] = NULL;


Expand Down
14 changes: 14 additions & 0 deletions src/gchd.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -386,3 +386,17 @@ gchd_uses_default (Gchd * gchd, GError ** error)


return TRUE; return TRUE;
} }

/**
* gchd_set_once:
* @gchd : a #Gchd.
* @enable : should the selection only be valid for the next reboot?
*
* If enable is true it will commit the user's selection to be used only
* for the next reboot.
**/
void
gchd_set_once (Gchd * gchd, gboolean enable)
{
gchd->once = enable;
}
1 change: 1 addition & 0 deletions src/gchd.h
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ gint gchd_get_menu_entries (Gchd * gchd, GList **entries, GError **error);
gchar * gchd_get_default_entry (Gchd * gchd, GError **error); gchar * gchd_get_default_entry (Gchd * gchd, GError **error);
gboolean gchd_set_default_entry (Gchd * gchd, gchar * entry, GchdSetDefaultCallback callback, gpointer data, GError **error); gboolean gchd_set_default_entry (Gchd * gchd, gchar * entry, GchdSetDefaultCallback callback, gpointer data, GError **error);
gboolean gchd_uses_default (Gchd * gchd, GError ** error); gboolean gchd_uses_default (Gchd * gchd, GError ** error);
void gchd_set_once (Gchd * gchd, gboolean enable);


void gchd_set_grub_dir (Gchd * gchd, const gchar * grub_dir); void gchd_set_grub_dir (Gchd * gchd, const gchar * grub_dir);
const gchar * gchd_get_grub_dir (Gchd * gchd); const gchar * gchd_get_grub_dir (Gchd * gchd);
Expand Down
9 changes: 9 additions & 0 deletions src/grub-choose-default-button-box.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ enum {
PROP_0, PROP_0,
PROP_DEFAULT_ENTRY, PROP_DEFAULT_ENTRY,
PROP_AUTO_COMMIT, PROP_AUTO_COMMIT,
PROP_ONCE,
PROP_GCHD, PROP_GCHD,
PROP_GRUB_DIR, PROP_GRUB_DIR,
}; };
Expand Down Expand Up @@ -72,6 +73,7 @@ struct _GrubChooseDefaultButtonBoxPrivate {
GtkWidget ** buttons; GtkWidget ** buttons;
gchar * def_entry; gchar * def_entry;
gboolean autocommit; gboolean autocommit;
gboolean once;
}; };


static void static void
Expand All @@ -87,6 +89,9 @@ grub_choose_default_button_box_get_property (GObject *object, guint property_id,
case PROP_AUTO_COMMIT: case PROP_AUTO_COMMIT:
g_value_set_boolean (value, priv->autocommit); g_value_set_boolean (value, priv->autocommit);
break; break;
case PROP_ONCE:
g_value_set_boolean (value, priv->once);
break;
case PROP_GCHD: case PROP_GCHD:
g_value_set_pointer (value, priv->gchd); g_value_set_pointer (value, priv->gchd);
break; break;
Expand All @@ -111,6 +116,9 @@ grub_choose_default_button_box_set_property (GObject *object, guint property_id,
case PROP_AUTO_COMMIT: case PROP_AUTO_COMMIT:
priv->autocommit = g_value_get_boolean (value); priv->autocommit = g_value_get_boolean (value);
break; break;
case PROP_ONCE:
priv->once = g_value_get_boolean (value);
break;
case PROP_GRUB_DIR: case PROP_GRUB_DIR:
gchd_set_grub_dir (priv->gchd, g_value_get_string (value)); gchd_set_grub_dir (priv->gchd, g_value_get_string (value));
DBG ("Set grub dir to %s", gchd_get_grub_dir (priv->gchd)); DBG ("Set grub dir to %s", gchd_get_grub_dir (priv->gchd));
Expand Down Expand Up @@ -147,6 +155,7 @@ grub_choose_default_button_box_class_init (GrubChooseDefaultButtonBoxClass *klas


g_object_class_override_property (object_class, PROP_DEFAULT_ENTRY, "default-entry"); g_object_class_override_property (object_class, PROP_DEFAULT_ENTRY, "default-entry");
g_object_class_override_property (object_class, PROP_AUTO_COMMIT, "auto-commit"); g_object_class_override_property (object_class, PROP_AUTO_COMMIT, "auto-commit");
g_object_class_override_property (object_class, PROP_ONCE, "once");


g_object_class_install_property (object_class, PROP_GCHD, g_object_class_install_property (object_class, PROP_GCHD,
g_param_spec_pointer ("gchd", "gchd", "gchd", G_PARAM_READABLE)); g_param_spec_pointer ("gchd", "gchd", "gchd", G_PARAM_READABLE));
Expand Down
7 changes: 7 additions & 0 deletions src/grub-choose-default-widget.c
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -39,6 +39,13 @@ grub_choose_default_widget_init (gpointer g_iface)
FALSE, FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); G_PARAM_READWRITE | G_PARAM_CONSTRUCT));


g_object_interface_install_property (g_iface,
g_param_spec_boolean ("once",
"once",
"Reboot only once with this selection",
FALSE,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));

iface->signals[GRUB_CHOOSE_DEFAULT_WIDGET_SIGNAL_SELECTED] = g_signal_new ("selected", iface->signals[GRUB_CHOOSE_DEFAULT_WIDGET_SIGNAL_SELECTED] = g_signal_new ("selected",
G_TYPE_FROM_CLASS (g_iface), G_SIGNAL_ACTION, G_TYPE_FROM_CLASS (g_iface), G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GrubChooseDefaultWidgetInterface, selected), G_STRUCT_OFFSET (GrubChooseDefaultWidgetInterface, selected),
Expand Down

0 comments on commit 4fc81c7

Please sign in to comment.