Tue, 24 Feb 2004 04:29:44 +0000
[gaim-migrate @ 9054]
// comments are bad in C. I'm not sure why this code wasn't just removed,
though, since it's now in the toolbar code... Oh, and someone needs to set
things up so the conversation code can trigger buttons on the toolbar,
*before* release.
| 5480 | 1 | /** |
| 2 | * @file gtkrequest.c GTK+ Request API | |
| 3 | * @ingroup gtkui | |
| 4 | * | |
| 5 | * gaim | |
| 6 | * | |
| 8046 | 7 | * Gaim is the legal property of its developers, whose names are too numerous |
| 8 | * to list here. Please refer to the COPYRIGHT file distributed with this | |
| 9 | * source distribution. | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
10 | * |
| 5480 | 11 | * This program is free software; you can redistribute it and/or modify |
| 12 | * it under the terms of the GNU General Public License as published by | |
| 13 | * the Free Software Foundation; either version 2 of the License, or | |
| 14 | * (at your option) any later version. | |
| 15 | * | |
| 16 | * This program is distributed in the hope that it will be useful, | |
| 17 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 18 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 19 | * GNU General Public License for more details. | |
| 20 | * | |
| 21 | * You should have received a copy of the GNU General Public License | |
| 22 | * along with this program; if not, write to the Free Software | |
| 23 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 24 | */ | |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6363
diff
changeset
|
25 | #include "gtkinternal.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5846
diff
changeset
|
26 | |
|
7066
2d8321bf0491
[gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents:
7048
diff
changeset
|
27 | #include "prefs.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5846
diff
changeset
|
28 | |
| 5480 | 29 | #include "gtkrequest.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5846
diff
changeset
|
30 | #include "gtkutils.h" |
| 5480 | 31 | #include "stock.h" |
|
7068
39c403beb595
[gaim-migrate @ 7632]
Christian Hammond <chipx86@chipx86.com>
parents:
7066
diff
changeset
|
32 | #include "ui.h" |
| 5480 | 33 | |
|
8294
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
34 | #include <gdk/gdkkeysyms.h> |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
35 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
36 | #if GTK_CHECK_VERSION(2,3,0) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
37 | # define NEW_STYLE_COMPLETION |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
38 | #endif |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
39 | |
| 5480 | 40 | typedef struct |
| 41 | { | |
| 42 | GaimRequestType type; | |
| 43 | ||
| 44 | void *user_data; | |
| 45 | GtkWidget *dialog; | |
| 46 | ||
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
47 | GtkWidget *ok_button; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
48 | |
| 5480 | 49 | size_t cb_count; |
| 50 | GCallback *cbs; | |
| 51 | ||
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
52 | union |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
53 | { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
54 | struct |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
55 | { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
56 | GtkWidget *entry; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
57 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
58 | gboolean multiline; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
59 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
60 | } input; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
61 | |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
62 | struct |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
63 | { |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
64 | GaimRequestFields *fields; |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
65 | |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
66 | } multifield; |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
67 | |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
68 | } u; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
69 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
70 | } GaimGtkRequestData; |
| 5480 | 71 | |
|
8294
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
72 | #ifndef NEW_STYLE_COMPLETION |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
73 | typedef struct |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
74 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
75 | GCompletion *completion; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
76 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
77 | gboolean completion_started; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
78 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
79 | } GaimGtkCompletionData; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
80 | #endif |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
81 | |
| 5480 | 82 | static void |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
83 | input_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data) |
| 5480 | 84 | { |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
85 | const char *value; |
| 7174 | 86 | char *multiline_value = NULL; |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
87 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
88 | if (data->u.input.multiline) { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
89 | GtkTextIter start_iter, end_iter; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
90 | GtkTextBuffer *buffer = |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
91 | gtk_text_view_get_buffer(GTK_TEXT_VIEW(data->u.input.entry)); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
92 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
93 | gtk_text_buffer_get_start_iter(buffer, &start_iter); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
94 | gtk_text_buffer_get_end_iter(buffer, &end_iter); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
95 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7142
diff
changeset
|
96 | multiline_value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
97 | FALSE); |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7142
diff
changeset
|
98 | value = multiline_value; |
| 5480 | 99 | } |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
100 | else |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
101 | value = gtk_entry_get_text(GTK_ENTRY(data->u.input.entry)); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
102 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
103 | if (id < data->cb_count && data->cbs[id] != NULL) |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
104 | ((GaimRequestInputCb)data->cbs[id])(data->user_data, value); |
|
6110
8c703c3453c7
[gaim-migrate @ 6572]
Mark Doliner <markdoliner@pidgin.im>
parents:
6109
diff
changeset
|
105 | else if (data->cbs[1] != NULL) |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6035
diff
changeset
|
106 | ((GaimRequestInputCb)data->cbs[1])(data->user_data, value); |
| 5480 | 107 | |
|
7172
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7142
diff
changeset
|
108 | if (data->u.input.multiline) |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7142
diff
changeset
|
109 | g_free(multiline_value); |
|
cf6ed52de3c7
[gaim-migrate @ 7740]
Mark Doliner <markdoliner@pidgin.im>
parents:
7142
diff
changeset
|
110 | |
| 5480 | 111 | gaim_request_close(GAIM_REQUEST_INPUT, data); |
| 112 | } | |
| 113 | ||
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
114 | static void |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
115 | action_response_cb(GtkDialog *dialog, gint id, GaimGtkRequestData *data) |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
116 | { |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
117 | if (id < data->cb_count && data->cbs[id] != NULL) |
|
5498
01eec144d71b
[gaim-migrate @ 5894]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
118 | ((GaimRequestActionCb)data->cbs[id])(data->user_data, id); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
119 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
120 | gaim_request_close(GAIM_REQUEST_INPUT, data); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
121 | } |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
122 | |
|
5835
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
123 | static gboolean |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
124 | field_string_focus_out_cb(GtkWidget *entry, GdkEventFocus *event, |
|
5846
d2c9503ad8a8
[gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents:
5845
diff
changeset
|
125 | GaimRequestField *field) |
|
5832
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
126 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
127 | const char *value; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
128 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
129 | if (gaim_request_field_string_is_multiline(field)) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
130 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
131 | GtkTextBuffer *buffer; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
132 | GtkTextIter start_iter, end_iter; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
133 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
134 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
135 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
136 | gtk_text_buffer_get_start_iter(buffer, &start_iter); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
137 | gtk_text_buffer_get_end_iter(buffer, &end_iter); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
138 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
139 | value = gtk_text_buffer_get_text(buffer, &start_iter, &end_iter, FALSE); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
140 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
141 | else |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
142 | value = gtk_entry_get_text(GTK_ENTRY(entry)); |
|
5834
c7945c10cff3
[gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents:
5832
diff
changeset
|
143 | |
|
5832
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
144 | gaim_request_field_string_set_value(field, |
|
5834
c7945c10cff3
[gaim-migrate @ 6265]
Christian Hammond <chipx86@chipx86.com>
parents:
5832
diff
changeset
|
145 | (*value == '\0' ? NULL : value)); |
|
5835
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
146 | |
|
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
147 | return FALSE; |
|
5832
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
148 | } |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
149 | |
|
5835
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
150 | static gboolean |
|
5846
d2c9503ad8a8
[gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents:
5845
diff
changeset
|
151 | field_int_focus_out_cb(GtkEntry *entry, GdkEventFocus *event, |
|
d2c9503ad8a8
[gaim-migrate @ 6277]
Christian Hammond <chipx86@chipx86.com>
parents:
5845
diff
changeset
|
152 | GaimRequestField *field) |
|
5832
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
153 | { |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
154 | gaim_request_field_int_set_value(field, |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
155 | atoi(gtk_entry_get_text(entry))); |
|
5835
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
156 | |
|
2d496d6d967d
[gaim-migrate @ 6266]
Christian Hammond <chipx86@chipx86.com>
parents:
5834
diff
changeset
|
157 | return FALSE; |
|
5832
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
158 | } |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
159 | |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
160 | static void |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
161 | field_bool_cb(GtkToggleButton *button, GaimRequestField *field) |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
162 | { |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
163 | gaim_request_field_bool_set_value(field, |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
164 | gtk_toggle_button_get_active(button)); |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
165 | } |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
166 | |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
167 | static void |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
168 | field_choice_menu_cb(GtkOptionMenu *menu, GaimRequestField *field) |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
169 | { |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
170 | gaim_request_field_choice_set_value(field, |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
171 | gtk_option_menu_get_history(menu)); |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
172 | } |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
173 | |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
174 | static void |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
175 | field_choice_option_cb(GtkRadioButton *button, GaimRequestField *field) |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
176 | { |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
177 | if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
178 | gaim_request_field_choice_set_value(field, |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
179 | g_slist_index(gtk_radio_button_get_group(button), button)); |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
180 | } |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
181 | |
|
f81c9ce730fa
[gaim-migrate @ 6263]
Christian Hammond <chipx86@chipx86.com>
parents:
5817
diff
changeset
|
182 | static void |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
183 | field_account_cb(GObject *w, GaimAccount *account, GaimRequestField *field) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
184 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
185 | gaim_request_field_account_set_value(field, account); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
186 | } |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
187 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
188 | static void |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
189 | multifield_ok_cb(GtkWidget *button, GaimGtkRequestData *data) |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
190 | { |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
191 | if (data->cbs[0] != NULL) |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
192 | ((GaimRequestFieldsCb)data->cbs[0])(data->user_data, |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
193 | data->u.multifield.fields); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
194 | |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
195 | gaim_request_close(GAIM_REQUEST_FIELDS, data); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
196 | } |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
197 | |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
198 | static void |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
199 | multifield_cancel_cb(GtkWidget *button, GaimGtkRequestData *data) |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
200 | { |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
201 | if (data->cbs[1] != NULL) |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
202 | ((GaimRequestFieldsCb)data->cbs[1])(data->user_data, |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
203 | data->u.multifield.fields); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
204 | |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
205 | gaim_request_close(GAIM_REQUEST_FIELDS, data); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
206 | } |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
207 | |
|
8323
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
208 | static void |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
209 | destroy_multifield_cb(GtkWidget *dialog, GdkEvent *event, |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
210 | GaimGtkRequestData *data) |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
211 | { |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
212 | multifield_cancel_cb(NULL, data); |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
213 | } |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
214 | |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
215 | |
| 5480 | 216 | #define STOCK_ITEMIZE(r, l) \ |
| 217 | if (!strcmp((r), text)) \ | |
| 218 | return (l); | |
| 219 | ||
| 220 | static const char * | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
221 | text_to_stock(const char *text) |
| 5480 | 222 | { |
|
6334
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
223 | STOCK_ITEMIZE(_("Yes"), GTK_STOCK_YES); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
224 | STOCK_ITEMIZE(_("No"), GTK_STOCK_NO); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
225 | STOCK_ITEMIZE(_("OK"), GTK_STOCK_OK); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
226 | STOCK_ITEMIZE(_("Cancel"), GTK_STOCK_CANCEL); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
227 | STOCK_ITEMIZE(_("Apply"), GTK_STOCK_APPLY); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
228 | STOCK_ITEMIZE(_("Close"), GTK_STOCK_CLOSE); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
229 | STOCK_ITEMIZE(_("Delete"), GTK_STOCK_DELETE); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
230 | STOCK_ITEMIZE(_("Add"), GTK_STOCK_ADD); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
231 | STOCK_ITEMIZE(_("Remove"), GTK_STOCK_REMOVE); |
|
47a748d6fb0f
[gaim-migrate @ 6833]
Christian Hammond <chipx86@chipx86.com>
parents:
6326
diff
changeset
|
232 | STOCK_ITEMIZE(_("Save"), GTK_STOCK_SAVE); |
|
8302
e23e9c8f05f7
[gaim-migrate @ 9026]
Christian Hammond <chipx86@chipx86.com>
parents:
8294
diff
changeset
|
233 | STOCK_ITEMIZE(_("Alias"), GAIM_STOCK_ALIAS); |
| 5480 | 234 | |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
235 | return text; |
| 5480 | 236 | } |
| 237 | ||
|
6363
6e0fa4b64fe6
[gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents:
6338
diff
changeset
|
238 | static void * |
| 5480 | 239 | gaim_gtk_request_input(const char *title, const char *primary, |
| 240 | const char *secondary, const char *default_value, | |
|
6035
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
241 | gboolean multiline, gboolean masked, |
| 5480 | 242 | const char *ok_text, GCallback ok_cb, |
| 243 | const char *cancel_text, GCallback cancel_cb, | |
| 244 | void *user_data) | |
| 245 | { | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
246 | GaimGtkRequestData *data; |
| 5480 | 247 | GtkWidget *dialog; |
| 248 | GtkWidget *vbox; | |
| 249 | GtkWidget *hbox; | |
| 250 | GtkWidget *label; | |
| 251 | GtkWidget *entry; | |
| 252 | GtkWidget *img; | |
| 253 | char *label_text; | |
| 254 | ||
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
255 | data = g_new0(GaimGtkRequestData, 1); |
| 5480 | 256 | data->type = GAIM_REQUEST_INPUT; |
| 257 | data->user_data = user_data; | |
| 258 | ||
| 259 | data->cb_count = 2; | |
| 260 | data->cbs = g_new0(GCallback, 2); | |
| 261 | ||
| 262 | data->cbs[0] = ok_cb; | |
| 263 | data->cbs[1] = cancel_cb; | |
| 264 | ||
| 265 | /* Create the dialog. */ | |
| 7678 | 266 | dialog = gtk_dialog_new_with_buttons(title ? title : GAIM_ALERT_TITLE, |
| 267 | NULL, 0, | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
268 | text_to_stock(cancel_text), 1, |
|
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
269 | text_to_stock(ok_text), 0, |
| 5485 | 270 | NULL); |
| 5480 | 271 | data->dialog = dialog; |
| 272 | ||
| 273 | g_signal_connect(G_OBJECT(dialog), "response", | |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
274 | G_CALLBACK(input_response_cb), data); |
| 5480 | 275 | |
| 276 | /* Setup the dialog */ | |
| 277 | gtk_container_set_border_width(GTK_CONTAINER(dialog), 6); | |
|
5510
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
278 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 6); |
| 5480 | 279 | gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
| 280 | gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); | |
|
5510
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
281 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), 0); |
| 5480 | 282 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 12); |
| 283 | ||
| 284 | /* Setup the main horizontal box */ | |
| 285 | hbox = gtk_hbox_new(FALSE, 12); | |
| 286 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); | |
| 287 | ||
| 288 | /* Dialog icon. */ | |
| 289 | img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, | |
| 290 | GTK_ICON_SIZE_DIALOG); | |
| 291 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); | |
| 292 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); | |
| 293 | ||
| 294 | /* Vertical box */ | |
| 295 | vbox = gtk_vbox_new(FALSE, 12); | |
| 296 | ||
| 297 | gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); | |
| 298 | ||
| 299 | /* Descriptive label */ | |
|
7843
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
300 | label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">" |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
301 | "%s</span>%s%s" : "%s%s%s"), |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
302 | (primary ? primary : ""), |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
303 | ((primary && secondary) ? "\n\n" : ""), |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
304 | (secondary ? secondary : "")); |
| 5480 | 305 | |
| 306 | label = gtk_label_new(NULL); | |
| 307 | ||
| 308 | gtk_label_set_markup(GTK_LABEL(label), label_text); | |
| 309 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); | |
| 310 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); | |
| 311 | gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); | |
| 312 | ||
| 313 | g_free(label_text); | |
| 314 | ||
| 315 | /* Entry field. */ | |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
316 | data->u.input.multiline = multiline; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
317 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
318 | if (multiline) { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
319 | GtkWidget *sw; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
320 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
321 | sw = gtk_scrolled_window_new(NULL, NULL); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
322 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
323 | GTK_POLICY_NEVER, GTK_POLICY_ALWAYS); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
324 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
325 | GTK_SHADOW_IN); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
326 | |
|
7068
39c403beb595
[gaim-migrate @ 7632]
Christian Hammond <chipx86@chipx86.com>
parents:
7066
diff
changeset
|
327 | gtk_widget_set_size_request(sw, 320, 130); |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
328 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
329 | gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
330 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
331 | entry = gtk_text_view_new(); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
332 | gtk_text_view_set_editable(GTK_TEXT_VIEW(entry), TRUE); |
|
7068
39c403beb595
[gaim-migrate @ 7632]
Christian Hammond <chipx86@chipx86.com>
parents:
7066
diff
changeset
|
333 | gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(entry), GTK_WRAP_WORD_CHAR); |
| 5480 | 334 | |
|
7066
2d8321bf0491
[gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents:
7048
diff
changeset
|
335 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
7538
b20dbe9222e2
[gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents:
7458
diff
changeset
|
336 | gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(entry)); |
|
7066
2d8321bf0491
[gaim-migrate @ 7630]
Christian Hammond <chipx86@chipx86.com>
parents:
7048
diff
changeset
|
337 | |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
338 | gtk_container_add(GTK_CONTAINER(sw), entry); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
339 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
340 | if (default_value != NULL) { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
341 | GtkTextBuffer *buffer; |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
342 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
343 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(entry)); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
344 | gtk_text_buffer_set_text(buffer, default_value, -1); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
345 | } |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
346 | } |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
347 | else { |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
348 | entry = gtk_entry_new(); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
349 | |
|
5510
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
350 | gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
|
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
351 | |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
352 | gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0); |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
353 | |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
354 | if (default_value != NULL) |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
355 | gtk_entry_set_text(GTK_ENTRY(entry), default_value); |
|
6035
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
356 | |
|
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
357 | if (masked) |
|
b245be9cbe3b
[gaim-migrate @ 6485]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
358 | gtk_entry_set_visibility(GTK_ENTRY(entry), FALSE); |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
359 | } |
|
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
360 | |
| 8137 | 361 | gaim_set_accessible_label (entry, label); |
|
5490
1ecf84cb6fc4
[gaim-migrate @ 5886]
Christian Hammond <chipx86@chipx86.com>
parents:
5485
diff
changeset
|
362 | data->u.input.entry = entry; |
| 5480 | 363 | |
| 364 | /* Show everything. */ | |
| 365 | gtk_widget_show_all(dialog); | |
| 366 | ||
| 367 | return data; | |
| 368 | } | |
| 369 | ||
|
6363
6e0fa4b64fe6
[gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents:
6338
diff
changeset
|
370 | static void * |
| 5480 | 371 | gaim_gtk_request_choice(const char *title, const char *primary, |
| 372 | const char *secondary, unsigned int default_value, | |
| 373 | const char *ok_text, GCallback ok_cb, | |
| 374 | const char *cancel_text, GCallback cancel_cb, | |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
375 | void *user_data, size_t choice_count, va_list args) |
| 5480 | 376 | { |
| 377 | return NULL; | |
| 378 | } | |
| 379 | ||
|
6363
6e0fa4b64fe6
[gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents:
6338
diff
changeset
|
380 | static void * |
| 5480 | 381 | gaim_gtk_request_action(const char *title, const char *primary, |
| 382 | const char *secondary, unsigned int default_action, | |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
383 | void *user_data, size_t action_count, va_list actions) |
| 5480 | 384 | { |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
385 | GaimGtkRequestData *data; |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
386 | GtkWidget *dialog; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
387 | GtkWidget *vbox; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
388 | GtkWidget *hbox; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
389 | GtkWidget *label; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
390 | GtkWidget *img; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
391 | void **buttons; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
392 | char *label_text; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
393 | int i; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
394 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
395 | data = g_new0(GaimGtkRequestData, 1); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
396 | data->type = GAIM_REQUEST_ACTION; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
397 | data->user_data = user_data; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
398 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
399 | data->cb_count = action_count; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
400 | data->cbs = g_new0(GCallback, action_count); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
401 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
402 | /* Reverse the buttons */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
403 | buttons = g_new0(void *, action_count * 2); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
404 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
405 | for (i = 0; i < action_count * 2; i += 2) { |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
406 | buttons[(action_count * 2) - i - 2] = va_arg(actions, char *); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
407 | buttons[(action_count * 2) - i - 1] = va_arg(actions, GCallback); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
408 | } |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
409 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
410 | /* Create the dialog. */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
411 | data->dialog = dialog = gtk_dialog_new(); |
|
6371
e92b66ee5518
[gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents:
6363
diff
changeset
|
412 | |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6035
diff
changeset
|
413 | if (title != NULL) |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6035
diff
changeset
|
414 | gtk_window_set_title(GTK_WINDOW(dialog), title); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
415 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
416 | for (i = 0; i < action_count; i++) { |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
417 | gtk_dialog_add_button(GTK_DIALOG(dialog), |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
418 | text_to_stock(buttons[2 * i]), i); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
419 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
420 | data->cbs[i] = buttons[2 * i + 1]; |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
421 | } |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
422 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
423 | g_free(buttons); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
424 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
425 | g_signal_connect(G_OBJECT(dialog), "response", |
|
5794
ebdbb7dc6658
[gaim-migrate @ 6219]
Christian Hammond <chipx86@chipx86.com>
parents:
5510
diff
changeset
|
426 | G_CALLBACK(action_response_cb), data); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
427 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
428 | /* Setup the dialog */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
429 | gtk_container_set_border_width(GTK_CONTAINER(dialog), 6); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
430 | gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
431 | gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
432 | gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog)->vbox), 12); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
433 | gtk_container_set_border_width(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), 6); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
434 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
435 | /* Setup the main horizontal box */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
436 | hbox = gtk_hbox_new(FALSE, 12); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
437 | gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), hbox); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
438 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
439 | /* Dialog icon. */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
440 | img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
441 | GTK_ICON_SIZE_DIALOG); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
442 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
443 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
444 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
445 | /* Vertical box */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
446 | vbox = gtk_vbox_new(FALSE, 12); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
447 | gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
448 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
449 | /* Descriptive label */ |
|
7843
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
450 | label_text = g_strdup_printf((primary ? "<span weight=\"bold\" size=\"larger\">" |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
451 | "%s</span>%s%s" : "%s%s%s"), |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
452 | (primary ? primary : ""), |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
453 | ((primary && secondary) ? "\n\n" : ""), |
|
d771eecc9717
[gaim-migrate @ 8497]
Nathan Fredrickson <nathan@silverorange.com>
parents:
7678
diff
changeset
|
454 | (secondary ? secondary : "")); |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
455 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
456 | label = gtk_label_new(NULL); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
457 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
458 | gtk_label_set_markup(GTK_LABEL(label), label_text); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
459 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
460 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
461 | gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
462 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
463 | g_free(label_text); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
464 | |
|
5510
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
465 | if (default_action != -1) |
|
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
466 | gtk_dialog_set_default_response(GTK_DIALOG(dialog), default_action); |
|
15d2eca03c1d
[gaim-migrate @ 5909]
Christian Hammond <chipx86@chipx86.com>
parents:
5498
diff
changeset
|
467 | |
|
5496
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
468 | /* Show everything. */ |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
469 | gtk_widget_show_all(dialog); |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
470 | |
|
ed995be89052
[gaim-migrate @ 5892]
Christian Hammond <chipx86@chipx86.com>
parents:
5490
diff
changeset
|
471 | return data; |
| 5480 | 472 | } |
| 473 | ||
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
474 | static void |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
475 | req_entry_field_changed_cb(GtkWidget *entry, GaimRequestField *field) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
476 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
477 | GaimGtkRequestData *req_data; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
478 | const char *text = gtk_entry_get_text(GTK_ENTRY(entry)); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
479 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
480 | gaim_request_field_string_set_value(field, (*text == '\0' ? NULL : text)); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
481 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
482 | req_data = (GaimGtkRequestData *)field->group->fields_list->ui_data; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
483 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
484 | gtk_widget_set_sensitive(req_data->ok_button, |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
485 | gaim_request_fields_all_required_filled(field->group->fields_list)); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
486 | } |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
487 | |
|
8294
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
488 | GList * |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
489 | get_online_screennames(void) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
490 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
491 | GList *screennames = NULL; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
492 | GaimBlistNode *gnode, *cnode, *bnode; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
493 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
494 | for (gnode = gaim_get_blist()->root; gnode != NULL; gnode = gnode->next) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
495 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
496 | if (!GAIM_BLIST_NODE_IS_GROUP(gnode)) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
497 | continue; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
498 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
499 | for (cnode = gnode->child; cnode != NULL; cnode = cnode->next) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
500 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
501 | if (!GAIM_BLIST_NODE_IS_CONTACT(cnode)) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
502 | continue; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
503 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
504 | for (bnode = cnode->child; bnode != NULL; bnode = bnode->next) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
505 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
506 | GaimBuddy *buddy = (GaimBuddy *)bnode; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
507 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
508 | if (!gaim_account_is_connected(buddy->account)) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
509 | continue; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
510 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
511 | screennames = g_list_append(screennames, g_strdup(buddy->name)); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
512 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
513 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
514 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
515 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
516 | return screennames; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
517 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
518 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
519 | #ifndef NEW_STYLE_COMPLETION |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
520 | static gboolean |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
521 | completion_entry_event(GtkEditable *entry, GdkEventKey *event, |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
522 | GaimGtkCompletionData *data) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
523 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
524 | int pos, end_pos; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
525 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
526 | if (event->type == GDK_KEY_PRESS && event->keyval == GDK_Tab) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
527 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
528 | gtk_editable_get_selection_bounds(entry, &pos, &end_pos); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
529 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
530 | if (data->completion_started && |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
531 | pos != end_pos && pos > 1 && |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
532 | end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry)))) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
533 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
534 | gtk_editable_select_region(entry, 0, 0); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
535 | gtk_editable_set_position(entry, -1); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
536 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
537 | return TRUE; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
538 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
539 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
540 | else if (event->type == GDK_KEY_PRESS && event->length > 0) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
541 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
542 | char *prefix, *nprefix; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
543 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
544 | gtk_editable_get_selection_bounds(entry, &pos, &end_pos); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
545 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
546 | if (data->completion_started && |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
547 | pos != end_pos && pos > 1 && |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
548 | end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry)))) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
549 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
550 | char *temp; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
551 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
552 | temp = gtk_editable_get_chars(entry, 0, pos); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
553 | prefix = g_strconcat(temp, event->string, NULL); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
554 | g_free(temp); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
555 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
556 | else if (pos == end_pos && pos > 1 && |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
557 | end_pos == strlen(gtk_entry_get_text(GTK_ENTRY(entry)))) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
558 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
559 | prefix = g_strconcat(gtk_entry_get_text(GTK_ENTRY(entry)), |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
560 | event->string, NULL); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
561 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
562 | else |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
563 | return FALSE; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
564 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
565 | pos = strlen(prefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
566 | nprefix = NULL; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
567 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
568 | g_completion_complete(data->completion, prefix, &nprefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
569 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
570 | if (nprefix != NULL) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
571 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
572 | gtk_entry_set_text(GTK_ENTRY(entry), nprefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
573 | gtk_editable_set_position(entry, pos); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
574 | gtk_editable_select_region(entry, pos, -1); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
575 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
576 | data->completion_started = TRUE; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
577 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
578 | g_free(nprefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
579 | g_free(prefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
580 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
581 | return TRUE; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
582 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
583 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
584 | g_free(prefix); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
585 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
586 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
587 | return FALSE; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
588 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
589 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
590 | static void |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
591 | destroy_completion_data(GtkWidget *w, GaimGtkCompletionData *data) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
592 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
593 | g_list_foreach(data->completion->items, (GFunc)g_free, NULL); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
594 | g_completion_free(data->completion); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
595 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
596 | g_free(data); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
597 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
598 | #endif /* !NEW_STYLE_COMPLETION */ |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
599 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
600 | static void |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
601 | setup_screenname_autocomplete(GtkWidget *entry, GaimRequestField *field) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
602 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
603 | #ifdef NEW_STYLE_COMPLETION |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
604 | GtkListStore *store; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
605 | GtkTreeIter iter; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
606 | GtkEntryCompletion *completion; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
607 | GList *screennames, *l; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
608 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
609 | store = gtk_list_store_new(1, G_TYPE_STRING); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
610 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
611 | screennames = get_online_screennames(); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
612 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
613 | for (l = screennames; l != NULL; l = l->next) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
614 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
615 | gtk_list_store_append(store, &iter); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
616 | gtk_list_store_set(store, &iter, 0, l->data, -1); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
617 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
618 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
619 | g_list_foreach(screennames, (GFunc)g_free, NULL); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
620 | g_list_free(screennames); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
621 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
622 | completion = gtk_entry_completion_new(); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
623 | gtk_entry_set_completion(GTK_ENTRY(entry), completion); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
624 | g_object_unref(completion); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
625 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
626 | gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store)); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
627 | g_object_unref(store); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
628 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
629 | gtk_entry_completion_set_text_column(completion, 0); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
630 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
631 | #else /* !NEW_STYLE_COMPLETION */ |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
632 | GaimGtkCompletionData *data; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
633 | GList *screennames; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
634 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
635 | data = g_new0(GaimGtkCompletionData, 1); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
636 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
637 | data->completion = g_completion_new(NULL); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
638 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
639 | g_completion_set_compare(data->completion, g_ascii_strncasecmp); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
640 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
641 | screennames = get_online_screennames(); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
642 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
643 | g_completion_add_items(data->completion, screennames); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
644 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
645 | g_list_free(screennames); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
646 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
647 | g_signal_connect(G_OBJECT(entry), "event", |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
648 | G_CALLBACK(completion_entry_event), data); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
649 | g_signal_connect(G_OBJECT(entry), "destroy", |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
650 | G_CALLBACK(destroy_completion_data), data); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
651 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
652 | #endif /* !NEW_STYLE_COMPLETION */ |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
653 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
654 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
655 | static void |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
656 | setup_entry_field(GtkWidget *entry, GaimRequestField *field) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
657 | { |
|
8294
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
658 | const char *type_hint; |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
659 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
660 | gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
661 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
662 | if (gaim_request_field_is_required(field)) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
663 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
664 | g_signal_connect(G_OBJECT(entry), "changed", |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
665 | G_CALLBACK(req_entry_field_changed_cb), field); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
666 | } |
|
8294
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
667 | |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
668 | if ((type_hint = gaim_request_field_get_type_hint(field)) != NULL) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
669 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
670 | if (!strcmp(type_hint, "screenname")) |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
671 | { |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
672 | setup_screenname_autocomplete(entry, field); |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
673 | } |
|
cffb4d4660f0
[gaim-migrate @ 9018]
Christian Hammond <chipx86@chipx86.com>
parents:
8289
diff
changeset
|
674 | } |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
675 | } |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
676 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
677 | static GtkWidget * |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
678 | create_string_field(GaimRequestField *field) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
679 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
680 | const char *value; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
681 | GtkWidget *widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
682 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
683 | value = gaim_request_field_string_get_default_value(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
684 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
685 | if (gaim_request_field_string_is_multiline(field)) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
686 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
687 | GtkWidget *textview; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
688 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
689 | widget = gtk_scrolled_window_new(NULL, NULL); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
690 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(widget), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
691 | GTK_SHADOW_IN); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
692 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(widget), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
693 | GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
694 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
695 | textview = gtk_text_view_new(); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
696 | gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
697 | TRUE); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
698 | gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(textview), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
699 | GTK_WRAP_WORD_CHAR); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
700 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
701 | if (gaim_prefs_get_bool("/gaim/gtk/conversations/spellcheck")) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
702 | gaim_gtk_setup_gtkspell(GTK_TEXT_VIEW(textview)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
703 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
704 | gtk_container_add(GTK_CONTAINER(widget), textview); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
705 | gtk_widget_show(textview); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
706 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
707 | gtk_widget_set_size_request(widget, -1, 75); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
708 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
709 | if (value != NULL) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
710 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
711 | GtkTextBuffer *buffer; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
712 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
713 | buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(textview)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
714 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
715 | gtk_text_buffer_set_text(buffer, value, -1); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
716 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
717 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
718 | gtk_text_view_set_editable(GTK_TEXT_VIEW(textview), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
719 | gaim_request_field_string_is_editable(field)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
720 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
721 | g_signal_connect(G_OBJECT(textview), "focus-out-event", |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
722 | G_CALLBACK(field_string_focus_out_cb), field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
723 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
724 | else |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
725 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
726 | widget = gtk_entry_new(); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
727 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
728 | setup_entry_field(widget, field); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
729 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
730 | if (value != NULL) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
731 | gtk_entry_set_text(GTK_ENTRY(widget), value); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
732 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
733 | gtk_entry_set_visibility(GTK_ENTRY(widget), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
734 | !gaim_request_field_string_is_masked(field)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
735 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
736 | gtk_editable_set_editable(GTK_EDITABLE(widget), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
737 | gaim_request_field_string_is_editable(field)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
738 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
739 | g_signal_connect(G_OBJECT(widget), "focus-out-event", |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
740 | G_CALLBACK(field_string_focus_out_cb), field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
741 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
742 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
743 | return widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
744 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
745 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
746 | static GtkWidget * |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
747 | create_int_field(GaimRequestField *field) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
748 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
749 | int value; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
750 | GtkWidget *widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
751 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
752 | widget = gtk_entry_new(); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
753 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
754 | setup_entry_field(widget, field); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
755 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
756 | value = gaim_request_field_int_get_default_value(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
757 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
758 | if (value != 0) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
759 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
760 | char buf[32]; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
761 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
762 | g_snprintf(buf, sizeof(buf), "%d", value); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
763 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
764 | gtk_entry_set_text(GTK_ENTRY(widget), buf); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
765 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
766 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
767 | g_signal_connect(G_OBJECT(widget), "focus-out-event", |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
768 | G_CALLBACK(field_int_focus_out_cb), field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
769 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
770 | return widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
771 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
772 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
773 | static GtkWidget * |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
774 | create_bool_field(GaimRequestField *field) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
775 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
776 | GtkWidget *widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
777 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
778 | widget = gtk_check_button_new_with_label( |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
779 | gaim_request_field_get_label(field)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
780 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
781 | gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(widget), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
782 | gaim_request_field_bool_get_default_value(field)); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
783 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
784 | g_signal_connect(G_OBJECT(widget), "toggled", |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
785 | G_CALLBACK(field_bool_cb), field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
786 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
787 | return widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
788 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
789 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
790 | static GtkWidget * |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
791 | create_choice_field(GaimRequestField *field) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
792 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
793 | GtkWidget *widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
794 | GList *labels; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
795 | GList *l; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
796 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
797 | labels = gaim_request_field_choice_get_labels(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
798 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
799 | if (g_list_length(labels) > 5) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
800 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
801 | GtkWidget *menu; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
802 | GtkWidget *item; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
803 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
804 | widget = gtk_option_menu_new(); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
805 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
806 | menu = gtk_menu_new(); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
807 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
808 | gtk_option_menu_set_menu(GTK_OPTION_MENU(widget), menu); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
809 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
810 | for (l = labels; l != NULL; l = l->next) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
811 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
812 | const char *text = l->data; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
813 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
814 | item = gtk_menu_item_new_with_label(text); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
815 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
816 | gtk_menu_shell_append(GTK_MENU_SHELL(menu), item); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
817 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
818 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
819 | g_signal_connect(G_OBJECT(widget), "changed", |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
820 | G_CALLBACK(field_choice_menu_cb), field); |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
821 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
822 | else |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
823 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
824 | GtkWidget *box; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
825 | GtkWidget *first_radio = NULL; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
826 | GtkWidget *radio; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
827 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
828 | if (g_list_length(labels) == 2) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
829 | box = gtk_hbox_new(FALSE, 6); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
830 | else |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
831 | box = gtk_vbox_new(FALSE, 0); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
832 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
833 | widget = box; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
834 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
835 | for (l = labels; l != NULL; l = l->next) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
836 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
837 | const char *text = l->data; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
838 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
839 | radio = gtk_radio_button_new_with_label_from_widget( |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
840 | GTK_RADIO_BUTTON(first_radio), text); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
841 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
842 | if (first_radio == NULL) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
843 | first_radio = radio; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
844 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
845 | gtk_box_pack_start(GTK_BOX(box), radio, TRUE, TRUE, 0); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
846 | gtk_widget_show(radio); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
847 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
848 | g_signal_connect(G_OBJECT(radio), "toggled", |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
849 | G_CALLBACK(field_choice_option_cb), field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
850 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
851 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
852 | |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
853 | return widget; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
854 | } |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
855 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
856 | static GtkWidget * |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
857 | create_account_field(GaimRequestField *field) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
858 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
859 | GtkWidget *widget; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
860 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
861 | widget = gaim_gtk_account_option_menu_new( |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
862 | gaim_request_field_account_get_default_value(field), |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
863 | gaim_request_field_account_get_show_all(field), |
|
8289
234429bac6b5
[gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents:
8286
diff
changeset
|
864 | G_CALLBACK(field_account_cb), |
|
234429bac6b5
[gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents:
8286
diff
changeset
|
865 | gaim_request_field_account_get_filter(field), |
|
234429bac6b5
[gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents:
8286
diff
changeset
|
866 | field); |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
867 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
868 | return widget; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
869 | } |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
870 | |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
871 | static void |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
872 | select_field_list_item(GtkTreeModel *model, GtkTreePath *path, |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
873 | GtkTreeIter *iter, gpointer data) |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
874 | { |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
875 | GaimRequestField *field = (GaimRequestField *)data; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
876 | const char *text; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
877 | |
|
7909
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
878 | gtk_tree_model_get(model, iter, 1, &text, -1); |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
879 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
880 | gaim_request_field_list_add_selected(field, text); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
881 | } |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
882 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
883 | static void |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
884 | list_field_select_changed_cb(GtkTreeSelection *sel, GaimRequestField *field) |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
885 | { |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
886 | gaim_request_field_list_clear_selected(field); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
887 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
888 | gtk_tree_selection_selected_foreach(sel, select_field_list_item, field); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
889 | } |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
890 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
891 | static GtkWidget * |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
892 | create_list_field(GaimRequestField *field) |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
893 | { |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
894 | GtkWidget *sw; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
895 | GtkWidget *treeview; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
896 | GtkListStore *store; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
897 | GtkCellRenderer *renderer; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
898 | GtkTreeSelection *sel; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
899 | GtkTreeViewColumn *column; |
|
7909
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
900 | GtkTreeIter iter; |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
901 | const GList *l; |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
902 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
903 | /* Create the scrolled window */ |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
904 | sw = gtk_scrolled_window_new(NULL, NULL); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
905 | gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
906 | GTK_POLICY_AUTOMATIC, |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
907 | GTK_POLICY_ALWAYS); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
908 | gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
909 | GTK_SHADOW_IN); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
910 | gtk_widget_show(sw); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
911 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
912 | /* Create the list store */ |
|
7909
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
913 | store = gtk_list_store_new(2, G_TYPE_POINTER, G_TYPE_STRING); |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
914 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
915 | /* Create the tree view */ |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
916 | treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(store)); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
917 | gtk_tree_view_set_rules_hint(GTK_TREE_VIEW(treeview), TRUE); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
918 | gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(treeview), FALSE); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
919 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
920 | sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview)); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
921 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
922 | if (gaim_request_field_list_get_multi_select(field)) |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
923 | gtk_tree_selection_set_mode(sel, GTK_SELECTION_MULTIPLE); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
924 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
925 | g_signal_connect(G_OBJECT(sel), "changed", |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
926 | G_CALLBACK(list_field_select_changed_cb), field); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
927 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
928 | column = gtk_tree_view_column_new(); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
929 | gtk_tree_view_insert_column(GTK_TREE_VIEW(treeview), column, -1); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
930 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
931 | renderer = gtk_cell_renderer_text_new(); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
932 | gtk_tree_view_column_pack_start(column, renderer, TRUE); |
|
7909
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
933 | gtk_tree_view_column_add_attribute(column, renderer, "text", 1); |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
934 | |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
935 | for (l = gaim_request_field_list_get_items(field); l != NULL; l = l->next) |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
936 | { |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
937 | const char *text = (const char *)l->data; |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
938 | |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
939 | gtk_list_store_append(store, &iter); |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
940 | |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
941 | gtk_list_store_set(store, &iter, |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
942 | 0, gaim_request_field_list_get_data(field, text), |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
943 | 1, text, |
|
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
944 | -1); |
|
7964
10d58eb8a16a
[gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents:
7951
diff
changeset
|
945 | |
|
10d58eb8a16a
[gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents:
7951
diff
changeset
|
946 | if (gaim_request_field_list_is_selected(field, text)) |
|
10d58eb8a16a
[gaim-migrate @ 8641]
Christian Hammond <chipx86@chipx86.com>
parents:
7951
diff
changeset
|
947 | gtk_tree_selection_select_iter(sel, &iter); |
|
7909
f2b88b6b97a7
[gaim-migrate @ 8569]
Christian Hammond <chipx86@chipx86.com>
parents:
7905
diff
changeset
|
948 | } |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
949 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
950 | gtk_container_add(GTK_CONTAINER(sw), treeview); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
951 | gtk_widget_show(treeview); |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
952 | |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
953 | return sw; |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
954 | } |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
955 | |
|
6363
6e0fa4b64fe6
[gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents:
6338
diff
changeset
|
956 | static void * |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
957 | gaim_gtk_request_fields(const char *title, const char *primary, |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
958 | const char *secondary, GaimRequestFields *fields, |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
959 | const char *ok_text, GCallback ok_cb, |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
960 | const char *cancel_text, GCallback cancel_cb, |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
961 | void *user_data) |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
962 | { |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
963 | GaimGtkRequestData *data; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
964 | GtkWidget *win; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
965 | GtkWidget *vbox; |
|
6326
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
966 | GtkWidget *hbox; |
|
5815
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
967 | GtkWidget *bbox; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
968 | GtkWidget *frame; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
969 | GtkWidget *label; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
970 | GtkWidget *table; |
|
5815
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
971 | GtkWidget *button; |
|
6326
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
972 | GtkWidget *img; |
|
5813
ba2693e8db07
[gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents:
5811
diff
changeset
|
973 | GtkSizeGroup *sg; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
974 | GList *gl, *fl; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
975 | GaimRequestFieldGroup *group; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
976 | GaimRequestField *field; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
977 | char *label_text; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
978 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
979 | data = g_new0(GaimGtkRequestData, 1); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
980 | data->type = GAIM_REQUEST_FIELDS; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
981 | data->user_data = user_data; |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
982 | data->u.multifield.fields = fields; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
983 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
984 | fields->ui_data = data; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
985 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
986 | data->cb_count = 2; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
987 | data->cbs = g_new0(GCallback, 2); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
988 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
989 | data->cbs[0] = ok_cb; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
990 | data->cbs[1] = cancel_cb; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
991 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
992 | data->dialog = win = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
|
6325
35357b64dbb2
[gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents:
6324
diff
changeset
|
993 | |
|
6109
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6035
diff
changeset
|
994 | if (title != NULL) |
|
44e5eb92b617
[gaim-migrate @ 6571]
Mark Doliner <markdoliner@pidgin.im>
parents:
6035
diff
changeset
|
995 | gtk_window_set_title(GTK_WINDOW(win), title); |
|
6325
35357b64dbb2
[gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents:
6324
diff
changeset
|
996 | |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
997 | gtk_window_set_role(GTK_WINDOW(win), "multifield"); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
998 | gtk_container_set_border_width(GTK_CONTAINER(win), 12); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
999 | gtk_window_set_resizable(GTK_WINDOW(win), FALSE); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1000 | |
|
8323
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
1001 | g_signal_connect(G_OBJECT(win), "delete_event", |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
1002 | G_CALLBACK(destroy_multifield_cb), data); |
|
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
1003 | |
|
6326
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1004 | /* Setup the main horizontal box */ |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1005 | hbox = gtk_hbox_new(FALSE, 12); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1006 | gtk_container_add(GTK_CONTAINER(win), hbox); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1007 | gtk_widget_show(hbox); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1008 | |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1009 | /* Dialog icon. */ |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1010 | img = gtk_image_new_from_stock(GAIM_STOCK_DIALOG_QUESTION, |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1011 | GTK_ICON_SIZE_DIALOG); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1012 | gtk_misc_set_alignment(GTK_MISC(img), 0, 0); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1013 | gtk_box_pack_start(GTK_BOX(hbox), img, FALSE, FALSE, 0); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1014 | gtk_widget_show(img); |
|
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1015 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1016 | /* Setup the vbox */ |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1017 | vbox = gtk_vbox_new(FALSE, 12); |
|
6326
62b5476c87f9
[gaim-migrate @ 6825]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
1018 | gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1019 | gtk_widget_show(vbox); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1020 | |
|
5813
ba2693e8db07
[gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents:
5811
diff
changeset
|
1021 | sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL); |
|
ba2693e8db07
[gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents:
5811
diff
changeset
|
1022 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1023 | if (primary != NULL || secondary != NULL) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1024 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1025 | label_text = g_strdup_printf( |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1026 | (primary |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1027 | ? "<span weight=\"bold\" size=\"larger\">" |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1028 | "%s</span>%s%s" |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1029 | : "%s%s%s"), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1030 | (primary ? primary : ""), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1031 | ((primary && secondary) ? "\n\n" : ""), |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1032 | (secondary ? secondary : "")); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1033 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1034 | label = gtk_label_new(NULL); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1035 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1036 | gtk_label_set_markup(GTK_LABEL(label), label_text); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1037 | gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1038 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1039 | gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0); |
|
6325
35357b64dbb2
[gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents:
6324
diff
changeset
|
1040 | gtk_widget_show(label); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1041 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1042 | g_free(label_text); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1043 | } |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1044 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1045 | for (gl = gaim_request_fields_get_groups(fields); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1046 | gl != NULL; |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1047 | gl = gl->next) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1048 | { |
|
5816
44bbfb7f8904
[gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents:
5815
diff
changeset
|
1049 | GList *field_list; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1050 | size_t field_count = 0; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1051 | size_t cols = 1; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1052 | size_t rows; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1053 | size_t col_num; |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1054 | size_t row_num = 0; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1055 | |
|
5816
44bbfb7f8904
[gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents:
5815
diff
changeset
|
1056 | group = gl->data; |
|
44bbfb7f8904
[gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents:
5815
diff
changeset
|
1057 | field_list = gaim_request_field_group_get_fields(group); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1058 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1059 | if (gaim_request_field_group_get_title(group) != NULL) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1060 | { |
|
6324
dddc1f8fe8e0
[gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents:
6110
diff
changeset
|
1061 | frame = gaim_gtk_make_frame(vbox, |
|
dddc1f8fe8e0
[gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents:
6110
diff
changeset
|
1062 | gaim_request_field_group_get_title(group)); |
|
dddc1f8fe8e0
[gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents:
6110
diff
changeset
|
1063 | } |
|
6325
35357b64dbb2
[gaim-migrate @ 6824]
Christian Hammond <chipx86@chipx86.com>
parents:
6324
diff
changeset
|
1064 | else |
|
6324
dddc1f8fe8e0
[gaim-migrate @ 6823]
Christian Hammond <chipx86@chipx86.com>
parents:
6110
diff
changeset
|
1065 | frame = vbox; |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1066 | |
|
5816
44bbfb7f8904
[gaim-migrate @ 6246]
Christian Hammond <chipx86@chipx86.com>
parents:
5815
diff
changeset
|
1067 | field_count = g_list_length(field_list); |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1068 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1069 | if (field_count > 9) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1070 | { |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1071 | rows = field_count / 2; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1072 | cols++; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1073 | } |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1074 | else |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1075 | rows = field_count; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1076 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1077 | col_num = 0; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1078 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1079 | for (fl = field_list; fl != NULL; fl = fl->next) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1080 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1081 | GaimRequestFieldType type; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1082 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1083 | field = (GaimRequestField *)fl->data; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1084 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1085 | type = gaim_request_field_get_type(field); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1086 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1087 | if (type == GAIM_REQUEST_FIELD_LABEL) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1088 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1089 | if (col_num > 0) |
| 7921 | 1090 | rows++; |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1091 | |
| 7921 | 1092 | rows++; |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1093 | } |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1094 | else if (type == GAIM_REQUEST_FIELD_STRING && |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1095 | gaim_request_field_string_is_multiline(field)) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1096 | { |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1097 | if (col_num > 0) |
| 7921 | 1098 | rows++; |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1099 | |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1100 | rows += 2; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1101 | } |
| 7921 | 1102 | |
| 1103 | col_num++; | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1104 | |
|
8323
d962d280c523
[gaim-migrate @ 9047]
Christian Hammond <chipx86@chipx86.com>
parents:
8302
diff
changeset
|
1105 | if (col_num >= cols) |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1106 | col_num = 0; |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1107 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1108 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1109 | table = gtk_table_new(rows, 2 * cols, FALSE); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1110 | gtk_table_set_row_spacings(GTK_TABLE(table), 6); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1111 | gtk_table_set_col_spacings(GTK_TABLE(table), 6); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1112 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1113 | gtk_container_add(GTK_CONTAINER(frame), table); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1114 | gtk_widget_show(table); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1115 | |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1116 | for (row_num = 0, fl = field_list; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1117 | row_num < rows && fl != NULL; |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1118 | row_num++) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1119 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1120 | for (col_num = 0; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1121 | col_num < cols && fl != NULL; |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1122 | col_num++, fl = fl->next) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1123 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1124 | size_t col_offset = col_num * 2; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1125 | GaimRequestFieldType type; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1126 | GtkWidget *widget = NULL; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1127 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1128 | field = fl->data; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1129 | |
| 7922 | 1130 | if (!gaim_request_field_is_visible(field)) { |
| 1131 | col_num--; | |
|
7904
266d6d5c68ac
[gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents:
7903
diff
changeset
|
1132 | continue; |
| 7922 | 1133 | } |
|
7904
266d6d5c68ac
[gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents:
7903
diff
changeset
|
1134 | |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1135 | type = gaim_request_field_get_type(field); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1136 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1137 | if (type != GAIM_REQUEST_FIELD_BOOLEAN) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1138 | { |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1139 | char *text; |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1140 | |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1141 | text = g_strdup_printf("%s:", |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1142 | gaim_request_field_get_label(field)); |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1143 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1144 | label = gtk_label_new(NULL); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1145 | gtk_label_set_markup_with_mnemonic(GTK_LABEL(label), text); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1146 | g_free(text); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1147 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1148 | gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1149 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1150 | gtk_size_group_add_widget(sg, label); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1151 | |
|
7905
03db29949e5d
[gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents:
7904
diff
changeset
|
1152 | if (type == GAIM_REQUEST_FIELD_LABEL || |
|
03db29949e5d
[gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents:
7904
diff
changeset
|
1153 | (type == GAIM_REQUEST_FIELD_STRING && |
|
03db29949e5d
[gaim-migrate @ 8565]
Christian Hammond <chipx86@chipx86.com>
parents:
7904
diff
changeset
|
1154 | gaim_request_field_string_is_multiline(field))) |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1155 | { |
| 7921 | 1156 | if(col_num > 0) |
| 1157 | row_num++; | |
| 1158 | ||
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1159 | gtk_table_attach_defaults(GTK_TABLE(table), label, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1160 | 0, 2 * cols, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1161 | row_num, row_num + 1); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1162 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1163 | row_num++; |
| 7921 | 1164 | col_num=cols; |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1165 | } |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1166 | else |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1167 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1168 | gtk_table_attach_defaults(GTK_TABLE(table), label, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1169 | col_offset, col_offset + 1, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1170 | row_num, row_num + 1); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1171 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1172 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1173 | gtk_widget_show(label); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1174 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1175 | |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1176 | if (type == GAIM_REQUEST_FIELD_STRING) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1177 | widget = create_string_field(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1178 | else if (type == GAIM_REQUEST_FIELD_INTEGER) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1179 | widget = create_int_field(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1180 | else if (type == GAIM_REQUEST_FIELD_BOOLEAN) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1181 | widget = create_bool_field(field); |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1182 | else if (type == GAIM_REQUEST_FIELD_CHOICE) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1183 | widget = create_choice_field(field); |
|
7903
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
1184 | else if (type == GAIM_REQUEST_FIELD_LIST) |
|
03fc5f87c49c
[gaim-migrate @ 8563]
Christian Hammond <chipx86@chipx86.com>
parents:
7900
diff
changeset
|
1185 | widget = create_list_field(field); |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1186 | else if (type == GAIM_REQUEST_FIELD_ACCOUNT) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1187 | widget = create_account_field(field); |
|
7904
266d6d5c68ac
[gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents:
7903
diff
changeset
|
1188 | else |
|
266d6d5c68ac
[gaim-migrate @ 8564]
Christian Hammond <chipx86@chipx86.com>
parents:
7903
diff
changeset
|
1189 | continue; |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1190 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1191 | if (type == GAIM_REQUEST_FIELD_STRING && |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1192 | gaim_request_field_string_is_multiline(field)) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1193 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1194 | gtk_table_attach(GTK_TABLE(table), widget, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1195 | 0, 2 * cols, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1196 | row_num, row_num + 1, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1197 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1198 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1199 | 5, 0); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1200 | } |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1201 | else if (type != GAIM_REQUEST_FIELD_BOOLEAN) |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1202 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1203 | gtk_table_attach(GTK_TABLE(table), widget, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1204 | col_offset + 1, col_offset + 2, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1205 | row_num, row_num + 1, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1206 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1207 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1208 | 5, 0); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1209 | } |
|
7900
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1210 | else |
|
468bd591cabe
[gaim-migrate @ 8560]
Christian Hammond <chipx86@chipx86.com>
parents:
7844
diff
changeset
|
1211 | { |
|
6337
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1212 | gtk_table_attach(GTK_TABLE(table), widget, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1213 | col_offset, col_offset + 1, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1214 | row_num, row_num + 1, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1215 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1216 | GTK_FILL | GTK_EXPAND, |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1217 | 5, 0); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1218 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1219 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1220 | gtk_widget_show(widget); |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1221 | |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1222 | field->ui_data = widget; |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1223 | } |
|
3399ae066dc1
[gaim-migrate @ 6836]
Christian Hammond <chipx86@chipx86.com>
parents:
6335
diff
changeset
|
1224 | } |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1225 | } |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1226 | |
|
5813
ba2693e8db07
[gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents:
5811
diff
changeset
|
1227 | g_object_unref(sg); |
|
ba2693e8db07
[gaim-migrate @ 6243]
Christian Hammond <chipx86@chipx86.com>
parents:
5811
diff
changeset
|
1228 | |
|
5815
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1229 | /* Button box. */ |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1230 | bbox = gtk_hbutton_box_new(); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1231 | gtk_box_set_spacing(GTK_BOX(bbox), 6); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1232 | gtk_button_box_set_layout(GTK_BUTTON_BOX(bbox), GTK_BUTTONBOX_END); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1233 | gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, TRUE, 0); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1234 | gtk_widget_show(bbox); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1235 | |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1236 | /* Cancel button */ |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1237 | button = gtk_button_new_from_stock(text_to_stock(cancel_text)); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1238 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1239 | gtk_widget_show(button); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1240 | |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1241 | g_signal_connect(G_OBJECT(button), "clicked", |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1242 | G_CALLBACK(multifield_cancel_cb), data); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1243 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1244 | GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1245 | |
|
5815
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1246 | /* OK button */ |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1247 | button = gtk_button_new_from_stock(text_to_stock(ok_text)); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1248 | gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1249 | gtk_widget_show(button); |
|
cdd5b8d9caca
[gaim-migrate @ 6245]
Christian Hammond <chipx86@chipx86.com>
parents:
5813
diff
changeset
|
1250 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1251 | data->ok_button = button; |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1252 | |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1253 | GTK_WIDGET_SET_FLAGS(button, GTK_CAN_DEFAULT); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1254 | gtk_window_set_default(GTK_WINDOW(win), button); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1255 | |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1256 | g_signal_connect(G_OBJECT(button), "clicked", |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1257 | G_CALLBACK(multifield_ok_cb), data); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1258 | |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1259 | if (!gaim_request_fields_all_required_filled(fields)) |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1260 | gtk_widget_set_sensitive(button, FALSE); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1261 | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1262 | gtk_widget_show(win); |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1263 | |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1264 | return data; |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1265 | } |
|
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1266 | |
|
6363
6e0fa4b64fe6
[gaim-migrate @ 6868]
Christian Hammond <chipx86@chipx86.com>
parents:
6338
diff
changeset
|
1267 | static void |
| 5480 | 1268 | gaim_gtk_close_request(GaimRequestType type, void *ui_handle) |
| 1269 | { | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1270 | GaimGtkRequestData *data = (GaimGtkRequestData *)ui_handle; |
| 5480 | 1271 | |
| 1272 | if (data->cbs != NULL) | |
| 1273 | g_free(data->cbs); | |
| 1274 | ||
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1275 | gtk_widget_destroy(data->dialog); |
|
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8137
diff
changeset
|
1276 | |
|
5817
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1277 | if (type == GAIM_REQUEST_FIELDS) |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1278 | gaim_request_fields_destroy(data->u.multifield.fields); |
|
d085bb1af93c
[gaim-migrate @ 6247]
Christian Hammond <chipx86@chipx86.com>
parents:
5816
diff
changeset
|
1279 | |
| 5480 | 1280 | g_free(data); |
| 1281 | } | |
| 1282 | ||
| 1283 | static GaimRequestUiOps ops = | |
| 1284 | { | |
| 1285 | gaim_gtk_request_input, | |
| 1286 | gaim_gtk_request_choice, | |
| 1287 | gaim_gtk_request_action, | |
|
5811
f9b61b4eda57
[gaim-migrate @ 6241]
Christian Hammond <chipx86@chipx86.com>
parents:
5794
diff
changeset
|
1288 | gaim_gtk_request_fields, |
| 5480 | 1289 | gaim_gtk_close_request |
| 1290 | }; | |
| 1291 | ||
| 1292 | GaimRequestUiOps * | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
1293 | gaim_gtk_request_get_ui_ops(void) |
| 5480 | 1294 | { |
| 1295 | return &ops; | |
| 1296 | } |