gconfexample.pp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. Program gconfexample;
  2. Uses glib, gtk, gconf, gconfclient;
  3. Const
  4. PATH : PChar = '/apps/GNOMEnclature/gconf_example';
  5. KEY : PChar= '/apps/GNOMEnclature/gconf_example/my_option';
  6. { Update the GConf key when the user toggles the check button. }
  7. Procedure button_toggled_cb (button : PGtkWidget; data : gpointer); cdecl;
  8. var
  9. client : PGConfClient;
  10. thevalue : gboolean;
  11. begin
  12. client := gconf_client_get_default ();
  13. thevalue := gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
  14. gconf_client_set_bool (client, KEY, thevalue, nil);
  15. end;
  16. { This is called when our key is changed. }
  17. Procedure gconf_notify_func (client : PGConfClient; cnxn_id : guint;
  18. entry : PGConfEntry; user_data : gpointer); cdecl;
  19. var
  20. check_button : PGtkWidget;
  21. thevalue : PGConfValue;
  22. checked : gboolean;
  23. begin
  24. check_button := GTK_WIDGET (user_data);
  25. thevalue := gconf_entry_get_value (entry);
  26. checked := gconf_value_get_bool (thevalue);
  27. { Update the check button accordingly. }
  28. gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
  29. checked);
  30. end;
  31. var
  32. window : PGtkWidget;
  33. check_button : PGTKWidget;
  34. client : PGConfClient;
  35. thevalue : gboolean;
  36. begin
  37. gtk_init (@argc, @argv);
  38. gconf_init(argc, argv, nil);
  39. client := gconf_client_get_default ();
  40. window := gtk_window_new (GTK_WINDOW_TOPLEVEL);
  41. gtk_signal_connect(GTK_OBJECT (window), 'destroy',
  42. @gtk_main_quit, nil);
  43. { Get the initial value from GConf. }
  44. thevalue := gconf_client_get_bool (client, KEY, nil);
  45. check_button := gtk_check_button_new_with_label ('My option');
  46. gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
  47. thevalue);
  48. gtk_signal_connect (GTK_OBJECT (check_button), 'toggled',
  49. gtk_SIGNAL_FUNC(@button_toggled_cb), nil);
  50. gtk_container_add (GTK_CONTAINER (window), check_button);
  51. gtk_widget_show_all (window);
  52. (* Add our directory to the list of directories the GConfClient will
  53. * watch.
  54. *)
  55. gconf_client_add_dir (client, PATH, GCONF_CLIENT_PRELOAD_NONE, nil);
  56. { Listen to changes to our key. }
  57. gconf_client_notify_add (client, KEY, @gconf_notify_func, check_button, nil, nil);
  58. gtk_main ();
  59. end.