Project

General

Profile

confirm.patch

Thomas Lange, November 26, 2012 16:51

View differences:

src/libaudgui/confirm.c
31 31
    aud_set_bool ("audgui", "no_confirm_playlist_delete", gtk_toggle_button_get_active (toggle));
32 32
}
33 33

  
34
static void confirm_delete_cb (GtkButton * button, void * data)
34
static void confirm_delete_cb (void * data)
35 35
{
36 36
    int list = aud_playlist_by_unique_id (GPOINTER_TO_INT (data));
37 37
    if (list < 0)
......
42 42
        aud_playlist_set_active (list - 1);
43 43
}
44 44

  
45
static void confirm_playlist_delete_response (GtkWidget * dialog, gint response, gpointer data)
46
{
47
    if (response == GTK_RESPONSE_YES)
48
        confirm_delete_cb (data);
49

  
50
    gtk_widget_destroy (dialog);
51
}
52

  
45 53
EXPORT void audgui_confirm_playlist_delete (int playlist)
46 54
{
47
    GtkWidget * window, * vbox, * hbox, * label, * button;
55
    GtkWidget * dialog, * vbox, * button;
48 56
    char * message;
49 57

  
50 58
    if (aud_get_bool ("audgui", "no_confirm_playlist_delete"))
......
55 63
        return;
56 64
    }
57 65

  
58
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
59
    gtk_window_set_type_hint ((GtkWindow *) window,
60
     GDK_WINDOW_TYPE_HINT_DIALOG);
61
    gtk_window_set_title ((GtkWindow *) window, _("Close Playlist"));
62
    gtk_window_set_resizable ((GtkWindow *) window, FALSE);
63
    gtk_container_set_border_width ((GtkContainer *) window, 6);
64
    audgui_destroy_on_escape (window);
65

  
66
    vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6);
67
    gtk_container_add ((GtkContainer *) window, vbox);
68

  
69
    hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,  6);
70
    gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
71

  
72
    gtk_box_pack_start ((GtkBox *) hbox, gtk_image_new_from_stock
73
     (GTK_STOCK_DIALOG_QUESTION, GTK_ICON_SIZE_DIALOG), FALSE, FALSE, 0);
74

  
75 66
    char * title = aud_playlist_get_title (playlist);
76 67
    message = g_strdup_printf (_("Are you sure you want to close %s?  If you "
77
     "do, any changes made since the playlist was exported will be lost."),
78
     title);
68
     "do, any changes made since the playlist was exported will be lost."), title);
79 69
    str_unref (title);
80
    label = gtk_label_new (message);
81
    g_free (message);
82
    gtk_label_set_line_wrap ((GtkLabel *) label, TRUE);
83
    gtk_widget_set_size_request (label, 320, -1);
84
    gtk_box_pack_start ((GtkBox *) hbox, label, TRUE, FALSE, 0);
85 70

  
86
    hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,  6);
87
    gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
71
    dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT,
72
     GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "%s", message);
73
    g_free (message);
74
    gtk_window_set_title ((GtkWindow *) dialog, _("Close Playlist"));
75
    gtk_dialog_set_default_response ((GtkDialog *) dialog, GTK_RESPONSE_YES);
88 76

  
77
    vbox = gtk_message_dialog_get_message_area ((GtkMessageDialog *) dialog);
89 78
    button = gtk_check_button_new_with_mnemonic (_("_Don't show this message again"));
90
    gtk_box_pack_start ((GtkBox *) hbox, button, FALSE, FALSE, 0);
79

  
80
    gtk_container_add ((GtkContainer *) vbox, button);
81

  
91 82
    g_signal_connect (button, "toggled", (GCallback) no_confirm_cb, NULL);
83
    g_signal_connect (dialog, "response", (GCallback) confirm_playlist_delete_response,
84
     GINT_TO_POINTER (aud_playlist_get_unique_id (playlist)));
92 85

  
93
    hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL,  6);
94
    gtk_box_pack_start ((GtkBox *) vbox, hbox, FALSE, FALSE, 0);
95

  
96
    button = gtk_button_new_from_stock (GTK_STOCK_NO);
97
    gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0);
98
    g_signal_connect_swapped (button, "clicked", (GCallback)
99
     gtk_widget_destroy, window);
100

  
101
    button = gtk_button_new_from_stock (GTK_STOCK_YES);
102
    gtk_box_pack_end ((GtkBox *) hbox, button, FALSE, FALSE, 0);
103
    gtk_widget_set_can_default (button, TRUE);
104
    gtk_widget_grab_default (button);
105
    gtk_widget_grab_focus (button);
106
    g_signal_connect ((GObject *) button, "clicked", (GCallback)
107
     confirm_delete_cb, GINT_TO_POINTER (aud_playlist_get_unique_id (playlist)));
108
    g_signal_connect_swapped ((GObject *) button, "clicked", (GCallback)
109
     gtk_widget_destroy, window);
110

  
111
    gtk_widget_show_all (window);
86
    gtk_widget_show_all (dialog);
112 87
}
113 88

  
114 89
static void rename_cb (GtkDialog * dialog, int resp, void * list)