~ubuntu-branches/ubuntu/lucid/gtweakui/lucid

« back to all changes in this revision

Viewing changes to src/nautilus.c

  • Committer: Bazaar Package Importer
  • Author(s): Remco van de Meent
  • Date: 2004-09-07 12:02:22 UTC
  • Revision ID: james.westby@ubuntu.com-20040907120222-jjoyb3ncyppa628d
Tags: upstream-0.4.0
ImportĀ upstreamĀ versionĀ 0.4.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#include "gtweakui.h"
 
2
 
 
3
void doquit(gpointer data) {
 
4
        gt_free(data);
 
5
        gtk_main_quit();
 
6
}
 
7
 
 
8
void on_close_clicked(GtkWidget *w, gpointer data) {
 
9
        doquit(data);
 
10
}
 
11
 
 
12
gboolean delete_event(GtkWidget *w, GdkEvent *event, gpointer data) {
 
13
        doquit(data);
 
14
        return TRUE;
 
15
}
 
16
 
 
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);
 
21
        else
 
22
                gconf_client_set_string(gc->data, gconf->data, ((GString *)(old->data))->str, NULL);
 
23
}
 
24
 
 
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]);
 
29
        if (*stage == 5) {
 
30
                gtk_widget_destroy(popup);
 
31
                return FALSE;
 
32
        }
 
33
        gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(progress), 0.25 * *stage);
 
34
        *stage = *stage + 1;
 
35
        return TRUE;
 
36
}
 
37
 
 
38
gboolean popup_delete_event(GtkWidget *w, GdkEvent *e, gpointer *d) {
 
39
        return TRUE;
 
40
}
 
41
 
 
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);
 
71
                widgets[0] = popup;
 
72
                widgets[1] = progress;
 
73
                widgets[2] = (GtkWidget *)0;
 
74
                g_timeout_add(500, close_popup_window, widgets);
 
75
        }
 
76
}
 
77
 
 
78
void updatetoggles(GtkWidget *w, gpointer d) {
 
79
        static GtkWidget *c[8] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL};
 
80
        int x;
 
81
 
 
82
        if (c[0] == 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");
 
91
        }
 
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);
 
102
                        } else {
 
103
                                gtk_widget_set_sensitive(c[3], FALSE);
 
104
                                gtk_widget_set_sensitive(c[4], FALSE);
 
105
                        }
 
106
                } else
 
107
                        for (x = 2; x < 5; x++)
 
108
                                gtk_widget_set_sensitive(c[x], FALSE);
 
109
        } else
 
110
                for (x = 1; x < 8; x ++)
 
111
                        gtk_widget_set_sensitive(c[x], FALSE);
 
112
}
 
113
 
 
114
void hookupcallbacks(GladeXML *ws) {
 
115
        GConfClient *gc;
 
116
        GConfValue *gv;
 
117
        GSList *prefs = NULL;
 
118
 
 
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);
 
122
 
 
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);
 
126
 
 
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"));
 
134
 
 
135
        updatetoggles(NULL, ws);
 
136
 
 
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);
 
140
 
 
141
        xsc(ws, "computer_icon_name_enable", "toggled", computer_icon_name_callback, prefs->data);
 
142
        xsc(ws, "show_desktop", "toggled", show_desktop_callback, ws);
 
143
 
 
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);
 
147
        }
 
148
 
 
149
        gtk_widget_show_all(xmlg(ws, "nautilus"));
 
150
}
 
151
 
 
152
int main(int argc, char *argv[]) {
 
153
        GladeXML *ws; 
 
154
        
 
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);
 
157
        
 
158
        bindtextdomain (GETTEXT_PACKAGE, GTWEAKUILOCALEDIR);
 
159
        bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
 
160
        textdomain (GETTEXT_PACKAGE);
 
161
 
 
162
        ws = glade_xml_new(gnome_program_locate_file(gtweakui, GNOME_FILE_DOMAIN_APP_DATADIR, "nautilus.glade", FALSE, NULL), NULL, NULL);
 
163
 
 
164
        hookupcallbacks(ws);
 
165
 
 
166
        gtk_main();
 
167
 
 
168
        return 0;
 
169
}