comparison src/gtkrequest.c @ 12234:7de5514bc406

[gaim-migrate @ 14536] Let's use the busy cursor in request API boxes as well. committer: Tailor Script <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Sun, 27 Nov 2005 04:41:13 +0000
parents e859c1663a27
children 255e6912607b
comparison
equal deleted inserted replaced
12233:02833a0ae716 12234:7de5514bc406
89 89
90 } GaimGtkCompletionData; 90 } GaimGtkCompletionData;
91 #endif 91 #endif
92 92
93 static void 93 static void
94 generic_response_start(GaimGtkRequestData *data)
95 {
96 GdkWindow *window = GTK_WIDGET(data->dialog)->window;
97 GdkCursor *cursor;
98
99 /* Tell the user we're doing something. */
100 cursor = gdk_cursor_new(GDK_WATCH);
101 gdk_window_set_cursor(window, cursor);
102 gdk_cursor_unref(cursor);
103 while (gtk_events_pending())
104 gtk_main_iteration();
105
106 }
107
108 static void
94 input_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data) 109 input_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
95 { 110 {
96 const char *value; 111 const char *value;
97 char *multiline_value = NULL; 112 char *multiline_value = NULL;
113
114 generic_response_start(data);
98 115
99 if (data->u.input.multiline) { 116 if (data->u.input.multiline) {
100 GtkTextIter start_iter, end_iter; 117 GtkTextIter start_iter, end_iter;
101 GtkTextBuffer *buffer = 118 GtkTextBuffer *buffer =
102 gtk_text_view_get_buffer(GTK_TEXT_VIEW(data->u.input.entry)); 119 gtk_text_view_get_buffer(GTK_TEXT_VIEW(data->u.input.entry));
127 } 144 }
128 145
129 static void 146 static void
130 action_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data) 147 action_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
131 { 148 {
149 generic_response_start(data);
150
132 if (id < data->cb_count && data->cbs[id] != NULL) 151 if (id < data->cb_count && data->cbs[id] != NULL)
133 ((GaimRequestActionCb)data->cbs[id])(data->user_data, id); 152 ((GaimRequestActionCb)data->cbs[id])(data->user_data, id);
134 153
135 gaim_request_close(GAIM_REQUEST_INPUT, data); 154 gaim_request_close(GAIM_REQUEST_INPUT, data);
136 } 155 }
139 static void 158 static void
140 choice_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data) 159 choice_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data)
141 { 160 {
142 GtkWidget *radio = g_object_get_data(G_OBJECT(dialog), "radio"); 161 GtkWidget *radio = g_object_get_data(G_OBJECT(dialog), "radio");
143 GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio)); 162 GSList *group = gtk_radio_button_get_group(GTK_RADIO_BUTTON(radio));
163
164 generic_response_start(data);
165
144 if (id < data->cb_count && data->cbs[id] != NULL) 166 if (id < data->cb_count && data->cbs[id] != NULL)
145 while (group) { 167 while (group) {
146 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) { 168 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(group->data))) {
147 ((GaimRequestChoiceCb)data->cbs[id])(data->user_data, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data), "choice_id"))); 169 ((GaimRequestChoiceCb)data->cbs[id])(data->user_data, GPOINTER_TO_INT(g_object_get_data(G_OBJECT(group->data), "choice_id")));
148 break; 170 break;
219 } 241 }
220 242
221 static void 243 static void
222 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data) 244 multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data)
223 { 245 {
246 generic_response_start(data);
247
224 if (!GTK_WIDGET_HAS_FOCUS(button)) 248 if (!GTK_WIDGET_HAS_FOCUS(button))
225 gtk_widget_grab_focus(button); 249 gtk_widget_grab_focus(button);
226 250
227 if (data->cbs[0] != NULL) 251 if (data->cbs[0] != NULL)
228 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data, 252 ((GaimRequestFieldsCb)data->cbs[0])(data->user_data,
232 } 256 }
233 257
234 static void 258 static void
235 multifield_cancel_cb(GtkWidget *button, GaimGtkRequestData *data) 259 multifield_cancel_cb(GtkWidget *button, GaimGtkRequestData *data)
236 { 260 {
261 generic_response_start(data);
262
237 if (data->cbs[1] != NULL) 263 if (data->cbs[1] != NULL)
238 ((GaimRequestFieldsCb)data->cbs[1])(data->user_data, 264 ((GaimRequestFieldsCb)data->cbs[1])(data->user_data,
239 data->u.multifield.fields); 265 data->u.multifield.fields);
240 266
241 gaim_request_close(GAIM_REQUEST_FIELDS, data); 267 gaim_request_close(GAIM_REQUEST_FIELDS, data);
1749 static void 1775 static void
1750 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, GaimGtkRequestData *data) 1776 file_ok_check_if_exists_cb(GtkWidget *widget, gint response, GaimGtkRequestData *data)
1751 { 1777 {
1752 gchar *current_folder; 1778 gchar *current_folder;
1753 1779
1780 generic_response_start(data);
1781
1754 if (response != GTK_RESPONSE_ACCEPT) { 1782 if (response != GTK_RESPONSE_ACCEPT) {
1755 if (data->cbs[0] != NULL) 1783 if (data->cbs[0] != NULL)
1756 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL); 1784 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL);
1757 gaim_request_close(GAIM_REQUEST_FILE, data); 1785 gaim_request_close(GAIM_REQUEST_FILE, data);
1758 return; 1786 return;
1774 static void 1802 static void
1775 file_ok_check_if_exists_cb(GtkWidget *button, GaimGtkRequestData *data) 1803 file_ok_check_if_exists_cb(GtkWidget *button, GaimGtkRequestData *data)
1776 { 1804 {
1777 const gchar *name; 1805 const gchar *name;
1778 gchar *current_folder; 1806 gchar *current_folder;
1807
1808 generic_response_start(data);
1779 1809
1780 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data->dialog)); 1810 name = gtk_file_selection_get_filename(GTK_FILE_SELECTION(data->dialog));
1781 1811
1782 /* If name is a directory then change directories */ 1812 /* If name is a directory then change directories */
1783 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(data->dialog))) 1813 if (gaim_gtk_check_if_dir(name, GTK_FILE_SELECTION(data->dialog)))
1809 1839
1810 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */ 1840 #if !GTK_CHECK_VERSION(2,4,0) /* FILECHOOSER */
1811 static void 1841 static void
1812 file_cancel_cb(GaimGtkRequestData *data) 1842 file_cancel_cb(GaimGtkRequestData *data)
1813 { 1843 {
1844 generic_response_start(data);
1845
1814 if (data->cbs[0] != NULL) 1846 if (data->cbs[0] != NULL)
1815 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL); 1847 ((GaimRequestFileCb)data->cbs[0])(data->user_data, NULL);
1816 1848
1817 gaim_request_close(GAIM_REQUEST_FILE, data); 1849 gaim_request_close(GAIM_REQUEST_FILE, data);
1818 } 1850 }