3
void doquit(gpointer data) {
8
void on_close_clicked(GtkWidget *w, gpointer data) {
12
gboolean delete_event(GtkWidget *w, GdkEvent *event, gpointer data) {
17
void computer_icon_name_callback(GtkWidget *w, gpointer d) {
18
GSList *type = (GSList *)d, *gconf = type->next, *entry = gconf->next, *old = entry->next, *gc = old->next;
19
if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w)))
20
gconf_client_unset(gc->data, gconf->data, NULL);
22
gconf_client_set_string(gc->data, gconf->data, ((GString *)(old->data))->str, NULL);
25
gboolean close_popup_window(gpointer dialog) {
26
GtkWidget *popup = ((GtkWidget **)dialog)[0], *progress = ((GtkWidget **)dialog)[1];
27
unsigned long int *stage;
28
stage = (unsigned long int *)&(((GtkWidget **)dialog)[2]);
30
gtk_widget_destroy(popup);
33
gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 0.25 * *stage);
38
gboolean popup_delete_event(GtkWidget *w, GdkEvent *e, gpointer *d) {
42
void show_desktop_callback (GtkWidget *w, gpointer d) {
43
static char *params[2]={"nautilus", "-n"};
44
GtkWidget *popup, *label, *progress, *vbox, *frame;
45
static GtkWidget *widgets[3];
46
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(w))) {
47
gnome_execute_async("/", 2, params);
48
popup = gtk_window_new(GTK_WINDOW_TOPLEVEL);
49
gsc(popup, "delete_event", popup_delete_event, NULL);
50
gtk_window_set_title(GTK_WINDOW(popup), _("Please wait..."));
51
gtk_window_set_resizable(GTK_WINDOW(popup), FALSE);
52
gtk_window_set_position(GTK_WINDOW(popup), GTK_WIN_POS_CENTER);
53
gtk_window_set_modal(GTK_WINDOW(popup), TRUE);
54
gtk_window_set_transient_for(GTK_WINDOW(popup), GTK_WINDOW(xmlg(d,"nautilus")));
55
gtk_window_set_type_hint(GTK_WINDOW(popup), GDK_WINDOW_TYPE_HINT_DIALOG);
56
gtk_window_set_skip_taskbar_hint(GTK_WINDOW(popup), TRUE);
57
gtk_window_set_skip_pager_hint(GTK_WINDOW(popup), TRUE);
58
gtk_window_set_decorated(GTK_WINDOW(popup), FALSE);
59
frame = gtk_frame_new(NULL);
60
gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);
61
gtk_container_add(GTK_CONTAINER(popup), frame);
62
vbox = gtk_vbox_new(FALSE, 10);
63
gtk_container_border_width(GTK_CONTAINER(vbox), 10);
64
gtk_container_add(GTK_CONTAINER(frame), vbox);
65
label = gtk_label_new(_("Please wait..."));
66
gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
67
gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
68
progress = gtk_progress_bar_new();
69
gtk_box_pack_start(GTK_BOX(vbox), progress, FALSE, FALSE, 0);
70
gtk_widget_show_all(popup);
72
widgets[1] = progress;
73
widgets[2] = (GtkWidget *)0;
74
g_timeout_add(500, close_popup_window, widgets);
78
void updatetoggles(GtkWidget *w, gpointer d) {
79
static GtkWidget *c[8] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
83
c[0] = xmlg(d, "show_desktop");
84
c[1] = xmlg(d, "computer_icon_visible");
85
c[2] = xmlg(d, "computer_icon_name_enable");
86
c[3] = xmlg(d, "label_label");
87
c[4] = xmlg(d, "computer_icon_name");
88
c[5] = xmlg(d, "home_icon_visible");
89
c[6] = xmlg(d, "trash_icon_visible");
90
c[7] = xmlg(d, "desktop_is_home_dir");
92
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c[0]))) {
93
gtk_widget_set_sensitive(c[1], TRUE);
94
gtk_widget_set_sensitive(c[5], TRUE);
95
gtk_widget_set_sensitive(c[6], TRUE);
96
gtk_widget_set_sensitive(c[7], TRUE);
97
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c[1]))) {
98
gtk_widget_set_sensitive(c[2], TRUE);
99
if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(c[2]))) {
100
gtk_widget_set_sensitive(c[3], TRUE);
101
gtk_widget_set_sensitive(c[4], TRUE);
103
gtk_widget_set_sensitive(c[3], FALSE);
104
gtk_widget_set_sensitive(c[4], FALSE);
107
for (x = 2; x < 5; x++)
108
gtk_widget_set_sensitive(c[x], FALSE);
110
for (x = 1; x < 8; x ++)
111
gtk_widget_set_sensitive(c[x], FALSE);
114
void hookupcallbacks(GladeXML *ws) {
117
GSList *prefs = NULL;
119
gc = gconf_client_get_default();
120
gconf_client_add_dir(gc, "/apps/nautilus/desktop", GCONF_CLIENT_PRELOAD_NONE, NULL);
121
gconf_client_add_dir(gc, "/apps/nautilus/preferences", GCONF_CLIENT_PRELOAD_NONE, NULL);
123
xsc(ws, "close_button", "clicked", on_close_clicked, prefs);
124
xsc(ws, "about_button", "clicked", about, xmlg(ws, "nautilus"));
125
xsc(ws, "nautilus", "delete_event", delete_event, prefs);
127
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/desktop/computer_icon_visible", xmlg(ws, "computer_icon_visible"));
128
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/desktop/home_icon_visible", xmlg(ws, "home_icon_visible"));
129
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/desktop/trash_icon_visible", xmlg(ws, "trash_icon_visible"));
130
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/preferences/show_desktop", xmlg(ws, "show_desktop"));
131
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/preferences/desktop_is_home_dir", xmlg(ws, "desktop_is_home_dir"));
132
prefs = gt_add_bool(prefs, gc, "/apps/nautilus/preferences/always_use_browser", xmlg(ws, "always_use_browser"));
133
prefs = gt_add_string(prefs, gc, "/apps/nautilus/desktop/computer_icon_name", xmlg(ws, "computer_icon_name"));
135
updatetoggles(NULL, ws);
137
xsc(ws, "show_desktop", "toggled", updatetoggles, ws);
138
xsc(ws, "computer_icon_visible", "toggled", updatetoggles, ws);
139
xsc(ws, "computer_icon_name_enable", "toggled", updatetoggles, ws);
141
xsc(ws, "computer_icon_name_enable", "toggled", computer_icon_name_callback, prefs->data);
142
xsc(ws, "show_desktop", "toggled", show_desktop_callback, ws);
144
if ((gv = gconf_client_get(gc, "/apps/nautilus/desktop/computer_icon_name", NULL)) != NULL) {
145
gconf_value_free(gv);
146
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(xmlg(ws, "computer_icon_name_enable")), TRUE);
149
gtk_widget_show_all(xmlg(ws, "nautilus"));
152
int main(int argc, char *argv[]) {
155
gtweakui = gnome_program_init(PACKAGE_NAME, PACKAGE_VERSION, LIBGNOMEUI_MODULE, argc, argv, GNOME_PARAM_APP_DATADIR, PACKAGE_DATA_DIR, NULL);
156
gconf_init(argc, argv, NULL);
158
bindtextdomain (GETTEXT_PACKAGE, GTWEAKUILOCALEDIR);
159
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
160
textdomain (GETTEXT_PACKAGE);
162
ws = glade_xml_new(gnome_program_locate_file(gtweakui, GNOME_FILE_DOMAIN_APP_DATADIR, "nautilus.glade", FALSE, NULL), NULL, NULL);