Mercurial > pidgin
comparison src/prefs.c @ 832:0142b4c66394
[gaim-migrate @ 842]
redesigned the away messages page
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 02 Sep 2000 10:41:53 +0000 |
parents | 60284aef22f0 |
children | bac7089491c1 |
comparison
equal
deleted
inserted
replaced
831:97f1ae636ed7 | 832:0142b4c66394 |
---|---|
38 #include "pixmaps/cancel.xpm" | 38 #include "pixmaps/cancel.xpm" |
39 #include "pixmaps/fontface2.xpm" | 39 #include "pixmaps/fontface2.xpm" |
40 #include "pixmaps/refresh.xpm" | 40 #include "pixmaps/refresh.xpm" |
41 #include "pixmaps/gnome_add.xpm" | 41 #include "pixmaps/gnome_add.xpm" |
42 #include "pixmaps/gnome_remove.xpm" | 42 #include "pixmaps/gnome_remove.xpm" |
43 #include "pixmaps/gnome_preferences.xpm" | |
43 #include "pixmaps/palette.xpm" | 44 #include "pixmaps/palette.xpm" |
44 #include "pixmaps/save.xpm" | 45 #include "pixmaps/save.xpm" |
45 | 46 |
46 struct debug_window *dw = NULL; | 47 struct debug_window *dw = NULL; |
47 static GtkWidget *prefs = NULL; | 48 static GtkWidget *prefs = NULL; |
1148 | 1149 |
1149 /* Fill the text box with new message */ | 1150 /* Fill the text box with new message */ |
1150 strcpy(buffer, a->message); | 1151 strcpy(buffer, a->message); |
1151 gtk_text_insert(GTK_TEXT(away_text), NULL, NULL, NULL, buffer, -1); | 1152 gtk_text_insert(GTK_TEXT(away_text), NULL, NULL, NULL, buffer, -1); |
1152 } | 1153 } |
1153 /* | 1154 |
1154 void away_list_unclicked(GtkWidget *widget, struct away_message *a) | |
1155 { | |
1156 if (prefs_away_list == NULL) | |
1157 return; | |
1158 | |
1159 strcpy(a->message, edited_message); | |
1160 save_prefs(); | |
1161 | |
1162 /* point edited_message to the new text */ | |
1163 /* edited_message = gtk_editable_get_chars(GTK_EDITABLE(away_text), 0, -1); | |
1164 } | |
1165 */ | |
1166 void save_away_message(GtkWidget *widget, void *dummy) | 1155 void save_away_message(GtkWidget *widget, void *dummy) |
1167 { | 1156 { |
1168 /* grab the current message */ | 1157 /* grab the current message */ |
1169 edited_message = gtk_editable_get_chars(GTK_EDITABLE(away_text), 0, -1); | 1158 edited_message = gtk_editable_get_chars(GTK_EDITABLE(away_text), 0, -1); |
1170 strcpy(cur_message->message, edited_message); | 1159 strcpy(cur_message->message, edited_message); |
1176 GList *i; | 1165 GList *i; |
1177 struct away_message *a; | 1166 struct away_message *a; |
1178 | 1167 |
1179 i = GTK_LIST(prefs_away_list)->selection; | 1168 i = GTK_LIST(prefs_away_list)->selection; |
1180 | 1169 |
1181 a = gtk_object_get_user_data(GTK_OBJECT(i->data)); | 1170 if (!i->next) { |
1182 | 1171 int text_len = gtk_text_get_length(GTK_TEXT(away_text)); |
1183 rem_away_mess(NULL, a); | 1172 gtk_text_set_point(GTK_TEXT(away_text), 0 ); |
1173 gtk_text_forward_delete (GTK_TEXT(away_text), text_len); | |
1174 } | |
1175 a = gtk_object_get_user_data(GTK_OBJECT(i->data)); | |
1176 rem_away_mess(NULL, a); | |
1184 } | 1177 } |
1185 | 1178 |
1186 static void paldest(GtkWidget *m, gpointer n) | 1179 static void paldest(GtkWidget *m, gpointer n) |
1187 { | 1180 { |
1188 gtk_widget_destroy(prefs_away_list); | 1181 gtk_widget_destroy(prefs_away_list); |
1189 prefs_away_list = NULL; | 1182 prefs_away_list = NULL; |
1190 } | 1183 } |
1191 | 1184 |
1185 static void do_away_mess(GtkWidget *m, gpointer n) | |
1186 { | |
1187 GList *i = GTK_LIST(prefs_away_list)->selection; | |
1188 if (i) | |
1189 do_away_message(NULL, gtk_object_get_user_data(GTK_OBJECT(i->data))); | |
1190 } | |
1191 | |
1192 static void away_page() | 1192 static void away_page() |
1193 { | 1193 { |
1194 GtkWidget *parent; | 1194 GtkWidget *parent; |
1195 GtkWidget *box; | 1195 GtkWidget *box; |
1196 GtkWidget *hbox; | |
1196 GtkWidget *top; | 1197 GtkWidget *top; |
1197 GtkWidget *bot; | 1198 GtkWidget *bot; |
1198 GtkWidget *sw; | 1199 GtkWidget *sw; |
1199 GtkWidget *sw2; | 1200 GtkWidget *sw2; |
1200 GtkWidget *button; | 1201 GtkWidget *button; |
1201 GtkWidget *label; | 1202 GtkWidget *label; |
1202 GtkWidget *list_item; | 1203 GtkWidget *list_item; |
1204 GtkWidget *sep; | |
1203 GList *awy = away_messages; | 1205 GList *awy = away_messages; |
1204 struct away_message *a; | 1206 struct away_message *a; |
1205 char buffer[BUF_LONG]; | 1207 char buffer[BUF_LONG]; |
1206 | 1208 |
1207 parent = prefdialog->parent; | 1209 parent = prefdialog->parent; |
1212 | 1214 |
1213 box = gtk_vbox_new(FALSE, 5); | 1215 box = gtk_vbox_new(FALSE, 5); |
1214 gtk_container_add(GTK_CONTAINER(prefdialog), box); | 1216 gtk_container_add(GTK_CONTAINER(prefdialog), box); |
1215 gtk_widget_show(box); | 1217 gtk_widget_show(box); |
1216 | 1218 |
1219 hbox = gtk_hbox_new(TRUE, 0); | |
1220 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); | |
1221 gtk_widget_set_usize(hbox, -1, 30); | |
1222 gtk_widget_show(hbox); | |
1223 | |
1224 hbox = gtk_hbox_new(TRUE, 0); | |
1225 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 5); | |
1226 gtk_widget_show(hbox); | |
1227 | |
1228 label = gtk_label_new(_("Title")); | |
1229 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
1230 gtk_widget_show(label); | |
1231 | |
1232 label = gtk_label_new(_("Message")); | |
1233 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 5); | |
1234 gtk_widget_show(label); | |
1235 | |
1217 top = gtk_hbox_new(FALSE, 0); | 1236 top = gtk_hbox_new(FALSE, 0); |
1218 gtk_box_pack_start(GTK_BOX(box), top, TRUE, TRUE, 0); | 1237 gtk_box_pack_start(GTK_BOX(box), top, FALSE, TRUE, 0); |
1219 gtk_widget_show(top); | 1238 gtk_widget_show(top); |
1220 | 1239 |
1221 sw = gtk_scrolled_window_new(NULL, NULL); | 1240 sw = gtk_scrolled_window_new(NULL, NULL); |
1222 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), | 1241 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), |
1223 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | 1242 GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
1224 gtk_box_pack_start(GTK_BOX(top), sw, TRUE, TRUE, 0); | 1243 gtk_box_pack_start(GTK_BOX(top), sw, TRUE, TRUE, 0); |
1244 gtk_widget_set_usize(sw, -1, 225); | |
1225 gtk_widget_show(sw); | 1245 gtk_widget_show(sw); |
1226 | 1246 |
1227 prefs_away_list = gtk_list_new(); | 1247 prefs_away_list = gtk_list_new(); |
1228 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), prefs_away_list); | 1248 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), prefs_away_list); |
1229 gtk_signal_connect(GTK_OBJECT(prefs_away_list), "destroy", GTK_SIGNAL_FUNC(paldest), 0); | 1249 gtk_signal_connect(GTK_OBJECT(prefs_away_list), "destroy", GTK_SIGNAL_FUNC(paldest), 0); |
1236 gtk_widget_show(sw2); | 1256 gtk_widget_show(sw2); |
1237 | 1257 |
1238 away_text = gtk_text_new(NULL, NULL); | 1258 away_text = gtk_text_new(NULL, NULL); |
1239 gtk_container_add(GTK_CONTAINER(sw2), away_text); | 1259 gtk_container_add(GTK_CONTAINER(sw2), away_text); |
1240 gtk_text_set_word_wrap(GTK_TEXT(away_text), TRUE); | 1260 gtk_text_set_word_wrap(GTK_TEXT(away_text), TRUE); |
1241 gtk_text_set_editable(GTK_TEXT(away_text), TRUE); | 1261 gtk_text_set_editable(GTK_TEXT(away_text), FALSE); |
1242 gtk_widget_show(away_text); | 1262 gtk_widget_show(away_text); |
1243 | 1263 |
1244 bot = gtk_hbox_new(FALSE, 0); | 1264 bot = gtk_hbox_new(FALSE, 0); |
1245 gtk_box_pack_start(GTK_BOX(box), bot, FALSE, FALSE, 0); | 1265 gtk_box_pack_start(GTK_BOX(box), bot, FALSE, FALSE, 5); |
1246 gtk_widget_show(bot); | 1266 gtk_widget_show(bot); |
1247 | 1267 |
1248 button = picture_button(prefs, _("Add"), gnome_add_xpm); | 1268 button = picture_button(prefs, _("Add"), gnome_add_xpm); |
1269 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), NULL); | |
1270 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); | |
1271 | |
1272 button = picture_button(prefs, _("Edit"), save_xpm); | |
1249 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), button); | 1273 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(create_away_mess), button); |
1274 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); | |
1275 | |
1276 button = picture_button(prefs, _("Make Away"), gnome_preferences_xpm); | |
1277 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(do_away_mess), NULL); | |
1250 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); | 1278 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); |
1251 | 1279 |
1252 button = picture_button(prefs, _("Remove"), gnome_remove_xpm); | 1280 button = picture_button(prefs, _("Remove"), gnome_remove_xpm); |
1253 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(remove_away_message), NULL); | 1281 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(remove_away_message), NULL); |
1254 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); | 1282 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); |
1255 | 1283 |
1256 button = picture_button(prefs, _("Save"), save_xpm); | |
1257 gtk_signal_connect(GTK_OBJECT(button), "clicked", GTK_SIGNAL_FUNC(save_away_message), NULL); | |
1258 gtk_box_pack_start(GTK_BOX(bot), button, TRUE, FALSE, 5); | |
1259 | |
1260 if (awy != NULL) { | 1284 if (awy != NULL) { |
1261 a = (struct away_message *)awy->data; | 1285 a = (struct away_message *)awy->data; |
1262 g_snprintf(buffer, sizeof(buffer), "%s", a->message); | 1286 g_snprintf(buffer, sizeof(buffer), "%s", a->message); |
1263 gtk_text_insert(GTK_TEXT(away_text), NULL, NULL, NULL, buffer, -1); | 1287 gtk_text_insert(GTK_TEXT(away_text), NULL, NULL, NULL, buffer, -1); |
1264 } | 1288 } |
1276 gtk_container_add(GTK_CONTAINER(prefs_away_list), list_item); | 1300 gtk_container_add(GTK_CONTAINER(prefs_away_list), list_item); |
1277 gtk_widget_show(list_item); | 1301 gtk_widget_show(list_item); |
1278 | 1302 |
1279 awy = awy->next; | 1303 awy = awy->next; |
1280 } | 1304 } |
1305 | |
1306 sep = gtk_hseparator_new(); | |
1307 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0); | |
1308 gtk_widget_show(sep); | |
1309 | |
1310 hbox = gtk_hbox_new(TRUE, 0); | |
1311 gtk_box_pack_start(GTK_BOX(box), hbox, FALSE, FALSE, 0); | |
1312 gtk_widget_show(hbox); | |
1313 | |
1314 gaim_button(_("Ignore new conversations when away"), &general_options, OPT_GEN_DISCARD_WHEN_AWAY, hbox); | |
1315 gaim_button(_("Sounds while away"), &sound_options, OPT_SOUND_WHEN_AWAY, hbox); | |
1281 | 1316 |
1282 gtk_widget_show(prefdialog); | 1317 gtk_widget_show(prefdialog); |
1283 } | 1318 } |
1284 | 1319 |
1285 static GtkWidget *browser_entry = NULL; | 1320 static GtkWidget *browser_entry = NULL; |