----- Mensaje original ----- > --- > src/virt-viewer-app.c | 61 > +++++++++++++++++++++++++++++++++++++++++++++++++-- > 1 file changed, 59 insertions(+), 2 deletions(-) > > diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c > index eea77e0..18b87a4 100644 > --- a/src/virt-viewer-app.c > +++ b/src/virt-viewer-app.c > @@ -140,6 +140,8 @@ struct _VirtViewerAppPrivate { > char *title; > > gint focused; > + GKeyFile *config; > + gchar *config_file; > }; > > > @@ -221,6 +223,9 @@ > virt_viewer_app_simple_message_dialog(VirtViewerApp *self, > void > virt_viewer_app_quit(VirtViewerApp *self) > { > + GError *error = NULL; > + gchar *data; > + > g_return_if_fail(VIRT_VIEWER_IS_APP(self)); > VirtViewerAppPrivate *priv = self->priv; > > @@ -232,6 +237,19 @@ virt_viewer_app_quit(VirtViewerApp *self) > } > } > > + { > + gchar *dir = g_path_get_dirname(priv->config_file); > + if (g_mkdir_with_parents(dir, S_IRWXU) == -1) > + g_warning("failed to create config directory"); missing g_free(dir) here > + } > + > + if ((data = g_key_file_to_data(priv->config, NULL, &error)) == > NULL || > + !g_file_set_contents(priv->config_file, data, -1, &error)) { > + g_warning("Couldn't save configuration: %s", > error->message); > + g_clear_error(&error); > + } > + g_free(data); > + > gtk_main_quit(); > } > > @@ -259,6 +277,8 @@ virt_viewer_app_window_set_visible(VirtViewerApp > *self, > VirtViewerWindow *window, > gboolean visible) > { > + GError *error = NULL; > + > g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), FALSE); > g_return_val_if_fail(VIRT_VIEWER_IS_WINDOW(window), FALSE); > > @@ -269,14 +289,33 @@ > virt_viewer_app_window_set_visible(VirtViewerApp *self, > if (virt_viewer_app_get_n_windows_visible(self) > 1) { > virt_viewer_window_hide(window); > return FALSE; > - } else { > + } > + > + gboolean ask = g_key_file_get_boolean(self->priv->config, > + "virt-viewer", > "ask-quit", &error); > + if (error) { > + ask = TRUE; > + g_clear_error(&error); > + } > + > + if (ask) { > GtkWidget *dialog = > gtk_message_dialog_new > (virt_viewer_window_get_window(window), > GTK_DIALOG_DESTROY_WITH_PARENT, > GTK_MESSAGE_QUESTION, > GTK_BUTTONS_OK_CANCEL, > _("Do you want to close the > session?")); > - gint result = gtk_dialog_run (GTK_DIALOG (dialog)); > + > + GtkWidget *check = gtk_check_button_new_with_label(_("Do > not ask me again")); > + > gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), > check); > + gtk_widget_show(check); > + > + gint result = gtk_dialog_run(GTK_DIALOG(dialog)); > + g_object_get(check, "active", &ask, NULL); I am going to have a second boolean called dont_ask instead > + if (ask) > + g_key_file_set_boolean(self->priv->config, > + "virt-viewer", "ask-quit", > FALSE); > + > gtk_widget_destroy(dialog); > switch (result) { > case GTK_RESPONSE_OK: > @@ -286,6 +325,9 @@ virt_viewer_app_window_set_visible(VirtViewerApp > *self, > break; > } > return FALSE; > + } else { > + virt_viewer_app_quit(self); > + return FALSE; > } > } > > @@ -1291,6 +1333,9 @@ virt_viewer_app_dispose (GObject *object) > priv->guri = NULL; > g_free(priv->title); > priv->title = NULL; > + g_free(priv->config_file); > + priv->config_file = NULL; > + g_clear_pointer(&priv->config, g_key_file_free); > > virt_viewer_app_free_connect_info(self); > > @@ -1320,8 +1365,20 @@ gboolean virt_viewer_app_start(VirtViewerApp > *self) > static void > virt_viewer_app_init (VirtViewerApp *self) > { > + GError *error = NULL; > + > self->priv = GET_PRIVATE(self); > self->priv->windows = g_hash_table_new_full(g_int_hash, > g_int_equal, g_free, g_object_unref); > + self->priv->config = g_key_file_new(); > + self->priv->config_file = > g_build_filename(g_get_user_config_dir(), > + "virt-viewer", > "settings", NULL); > + > + g_key_file_load_from_file(self->priv->config, > self->priv->config_file, > + > G_KEY_FILE_KEEP_COMMENTS|G_KEY_FILE_KEEP_TRANSLATIONS, > &error); > + if (error) > + g_debug("Couldn't load configuration: %s", error->message); > + > + g_clear_error(&error); > } > > static GObject * > -- > 1.8.1.1.439.g50a6b54 > > _______________________________________________ > virt-tools-list mailing list > virt-tools-list@xxxxxxxxxx > https://www.redhat.com/mailman/listinfo/virt-tools-list > _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list