static GtkWidget*
create_prefs_dialog (GtkWidget   *parent,
                     MateConfClient *client)
{
  GtkWidget* dialog;
  GtkWidget* vbox;
  GtkWidget* entry;
  
  dialog = gtk_dialog_new_with_buttons ("basic-mateconf-app Preferences",
                                        GTK_WINDOW (parent),
                                        0,
                                        GTK_STOCK_CLOSE,
                                        GTK_RESPONSE_ACCEPT,
                                        NULL);

  /* destroy dialog on button press */
  g_signal_connect (G_OBJECT (dialog), "response",
                    G_CALLBACK (gtk_widget_destroy),
                    NULL);

  gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);

  /* resizing doesn't grow the entries anyhow */
  gtk_window_set_resizable (GTK_WINDOW (dialog), FALSE);
  
  vbox = gtk_vbox_new (FALSE, 5);

  gtk_container_set_border_width (GTK_CONTAINER (vbox), 5);
  
  gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area(dialog)),
                      vbox, TRUE, TRUE, 0);

  entry = create_config_entry (dialog, client, "/apps/basic-mateconf-app/foo",
                               TRUE);
  gtk_box_pack_start (GTK_BOX (vbox), entry, 
                      FALSE, FALSE, 0);
  
  entry = create_config_entry (dialog, client, "/apps/basic-mateconf-app/bar",
                               FALSE);
  gtk_box_pack_start (GTK_BOX (vbox), entry, 
                      FALSE, FALSE, 0);
  
  entry = create_config_entry (dialog, client, "/apps/basic-mateconf-app/baz",
                               FALSE);
  gtk_box_pack_start (GTK_BOX (vbox), entry, 
                      FALSE, FALSE, 0);

  entry = create_config_entry (dialog, client, "/apps/basic-mateconf-app/blah",
                               FALSE);
  gtk_box_pack_start (GTK_BOX (vbox), entry, 
                      FALSE, FALSE, 0);
  
  return dialog;
}
Beispiel #2
0
static GtkWidget*
create_prefs_dialog(GtkWidget* parent, GConfClient* client)
{
    GConfChangeSet* cs;
    GtkWidget* dialog;
    GtkWidget* bbox;
    GtkWidget* apply;
    GtkWidget* revert;
    GtkWidget* ok;
    GtkWidget* cancel;
    GtkWidget* vbox_outer;
    GtkWidget* vbox_inner;
    GtkWidget* entry;

    dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);

    apply = gtk_button_new_with_label("Apply");
    revert = gtk_button_new_with_label("Revert");

    ok = gtk_button_new_with_label("OK");
    cancel = gtk_button_new_with_label("Cancel");

    g_object_set_data(dialog, "apply", apply);
    g_object_set_data(dialog, "revert", revert);
    g_object_set_data(dialog, "ok", ok);
    g_object_set_data(dialog, "cancel", cancel);

    bbox = gtk_hbutton_box_new();

    vbox_outer = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);

    vbox_inner = gtk_box_new(GTK_ORIENTATION_VERTICAL, 10);

    gtk_container_add(GTK_CONTAINER(dialog), vbox_outer);

    gtk_box_pack_start(GTK_BOX(vbox_outer), vbox_inner, TRUE, TRUE, 0);
    gtk_box_pack_end(GTK_BOX(vbox_outer), bbox, FALSE, FALSE, 0);

    gtk_container_add(GTK_CONTAINER(bbox), apply);
    gtk_container_add(GTK_CONTAINER(bbox), revert);
    gtk_container_add(GTK_CONTAINER(bbox), ok);
    gtk_container_add(GTK_CONTAINER(bbox), cancel);

    cs = gconf_change_set_new();

    g_object_set_data(dialog, "changeset", cs);
    g_object_set_data(dialog, "client", client);

    /* Grab a reference */
    g_object_ref(G_OBJECT(client));

    g_signal_connect(dialog, "destroy",
                     G_CALLBACK(prefs_dialog_destroy_callback),
                     NULL);

    prefs_dialog_update_sensitivity(dialog);

    g_signal_connect(apply, "clicked",
                     G_CALLBACK(apply_button_callback),
                     dialog);

    g_signal_connect(revert, "clicked",
                     G_CALLBACK(revert_button_callback),
                     dialog);

    g_signal_connect(ok, "clicked",
                     G_CALLBACK(ok_button_callback),
                     dialog);

    g_signal_connect(cancel, "clicked",
                     G_CALLBACK(cancel_button_callback),
                     dialog);

    gtk_window_set_transient_for(GTK_WINDOW(dialog), GTK_WINDOW(parent));

    entry = create_config_entry(dialog, client, "/apps/basic-gconf-app/foo");
    gtk_box_pack_start(GTK_BOX(vbox_inner), entry,
                       FALSE, FALSE, 0);

    entry = create_config_entry(dialog, client, "/apps/basic-gconf-app/bar");
    gtk_box_pack_start(GTK_BOX(vbox_inner), entry,
                       FALSE, FALSE, 0);

    entry = create_config_entry(dialog, client, "/apps/basic-gconf-app/baz");
    gtk_box_pack_start(GTK_BOX(vbox_inner), entry,
                       FALSE, FALSE, 0);

    entry = create_config_entry(dialog, client, "/apps/basic-gconf-app/blah");
    gtk_box_pack_start(GTK_BOX(vbox_inner), entry,
                       FALSE, FALSE, 0);

    return dialog;
}