Mercurial > pidgin
comparison src/conversation.c @ 230:83dd297aa363
[gaim-migrate @ 240]
Added a few patches from fflewddur to add default away messages, save prefs
after deleting an away message, and *duh* *duh* *duh* *duh* presenting.....
font face selection dialog! Thanks fflewddur.
I also added a pixmap for font face to eventually go on the conversation
windows, but I didn't implement it yet.
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Wed, 10 May 2000 10:56:25 +0000 |
parents | ec0686b3b03f |
children | 985635758c33 |
comparison
equal
deleted
inserted
replaced
229:e8ea7f37e28f | 230:83dd297aa363 |
---|---|
35 #include "pixmaps/bold.xpm" | 35 #include "pixmaps/bold.xpm" |
36 #include "pixmaps/italic.xpm" | 36 #include "pixmaps/italic.xpm" |
37 #include "pixmaps/small.xpm" | 37 #include "pixmaps/small.xpm" |
38 #include "pixmaps/normal.xpm" | 38 #include "pixmaps/normal.xpm" |
39 #include "pixmaps/big.xpm" | 39 #include "pixmaps/big.xpm" |
40 /* #include "pixmaps/fontface.xpm" */ | |
40 #include "pixmaps/speaker.xpm" | 41 #include "pixmaps/speaker.xpm" |
41 /* #include "pixmaps/aimicon2.xpm" */ | 42 /* #include "pixmaps/aimicon2.xpm" */ |
42 #include "pixmaps/wood.xpm" | 43 #include "pixmaps/wood.xpm" |
43 #include "pixmaps/palette.xpm" | 44 #include "pixmaps/palette.xpm" |
44 #include "pixmaps/link.xpm" | 45 #include "pixmaps/link.xpm" |
47 int state_lock=0; | 48 int state_lock=0; |
48 | 49 |
49 GdkPixmap *dark_icon_pm = NULL; | 50 GdkPixmap *dark_icon_pm = NULL; |
50 GdkBitmap *dark_icon_bm = NULL; | 51 GdkBitmap *dark_icon_bm = NULL; |
51 | 52 |
53 char *fontface; | |
52 | 54 |
53 void check_everything(GtkWidget *entry); | 55 void check_everything(GtkWidget *entry); |
54 gboolean user_keypress_callback(GtkWidget *entry, GdkEventKey *event, struct conversation *c); | 56 gboolean user_keypress_callback(GtkWidget *entry, GdkEventKey *event, struct conversation *c); |
55 | 57 void set_font_face(GtkWidget *widget, struct conversation *c); |
56 | 58 |
57 /*------------------------------------------------------------------------*/ | 59 /*------------------------------------------------------------------------*/ |
58 /* Helpers */ | 60 /* Helpers */ |
59 /*------------------------------------------------------------------------*/ | 61 /*------------------------------------------------------------------------*/ |
60 | 62 |
245 rm_log(find_log_info(p->name)); | 247 rm_log(find_log_info(p->name)); |
246 else | 248 else |
247 show_log_dialog(p->name); | 249 show_log_dialog(p->name); |
248 } | 250 } |
249 | 251 |
250 | |
251 static int close_callback(GtkWidget *widget, struct conversation *c) | 252 static int close_callback(GtkWidget *widget, struct conversation *c) |
252 { | 253 { |
253 gtk_widget_destroy(c->window); | 254 gtk_widget_destroy(c->window); |
254 delete_conversation(c); | 255 delete_conversation(c); |
255 return TRUE; | 256 return TRUE; |
257 } | |
258 | |
259 void set_font_face(GtkWidget *widget, struct conversation *c) | |
260 { | |
261 char *pre_fontface; | |
262 int alloc = 0; | |
263 | |
264 if (!(font_options & OPT_FONT_FACE)) | |
265 return; | |
266 | |
267 if (fontface) | |
268 { | |
269 pre_fontface = g_strconcat("<FONT FACE=\"", fontface, "\">", '\0'); | |
270 alloc++; | |
271 } | |
272 else | |
273 pre_fontface = "<FONT FACE=\"Helvetica\">"; | |
274 | |
275 surround(c->entry, pre_fontface, "</FONT>"); | |
276 gtk_widget_grab_focus(c->entry); | |
277 | |
278 if (alloc) | |
279 g_free(pre_fontface); | |
280 return; | |
256 } | 281 } |
257 | 282 |
258 static gint delete_event_convo(GtkWidget *w, GdkEventAny *e, struct conversation *c) | 283 static gint delete_event_convo(GtkWidget *w, GdkEventAny *e, struct conversation *c) |
259 { | 284 { |
260 delete_conversation(c); | 285 delete_conversation(c); |
417 | 442 |
418 if (awaymessage != NULL) { | 443 if (awaymessage != NULL) { |
419 do_im_back(); | 444 do_im_back(); |
420 } | 445 } |
421 | 446 |
422 | 447 set_font_face(NULL, c); |
448 | |
423 gtk_widget_grab_focus(c->entry); | 449 gtk_widget_grab_focus(c->entry); |
424 | 450 |
425 g_free(buf2); | 451 g_free(buf2); |
426 g_free(buf); | 452 g_free(buf); |
427 } | 453 } |
500 char *t; | 526 char *t; |
501 int start = GTK_EDITABLE(entry)->selection_start_pos; | 527 int start = GTK_EDITABLE(entry)->selection_start_pos; |
502 int finish = GTK_EDITABLE(entry)->selection_end_pos; | 528 int finish = GTK_EDITABLE(entry)->selection_end_pos; |
503 s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); | 529 s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); |
504 t = s; | 530 t = s; |
505 while((t = strstr(t, tag))) { | 531 if (strstr(tag, "<FONT SIZE=")) |
506 if (((t-s) < finish) && ((t-s) >= start)) { | 532 { |
507 gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag)); | 533 while((t = strstr(t, "<FONT SIZE="))) { |
508 t = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); | 534 if (((t-s) < finish) && ((t-s) >= start)) { |
535 gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag)); | |
536 s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); | |
537 t = s; | |
538 } | |
539 else t++; | |
509 } | 540 } |
510 else t++; | 541 } |
542 else | |
543 { | |
544 while((t = strstr(t, tag))) { | |
545 if (((t-s) < finish) && ((t-s) >= start)) { | |
546 gtk_editable_delete_text(GTK_EDITABLE(entry), (t-s), (t-s) + strlen(tag)); | |
547 s = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1); | |
548 t = s; | |
549 } | |
550 else t++; | |
551 } | |
511 } | 552 } |
512 g_free(s); | 553 g_free(s); |
513 } | 554 } |
514 | 555 |
515 void surround(GtkWidget *entry, char *pre, char *post) | 556 void surround(GtkWidget *entry, char *pre, char *post) |
620 surround(entry, "<I>","</I>"); | 661 surround(entry, "<I>","</I>"); |
621 else | 662 else |
622 advance_past(entry, "<I>", "</I>"); | 663 advance_past(entry, "<I>", "</I>"); |
623 } | 664 } |
624 | 665 |
666 /* html code to modify font sizes must all be the same length, */ | |
667 /* currently set to 15 chars */ | |
668 | |
625 static void do_small(GtkWidget *small, GtkWidget *entry) | 669 static void do_small(GtkWidget *small, GtkWidget *entry) |
626 { | 670 { |
627 if (state_lock) | 671 if (state_lock) |
628 return; | 672 return; |
629 surround(entry, "<FONT SIZE=\"-2\">","</FONT>"); | 673 surround(entry, "<FONT SIZE=\"1\">","</FONT>"); |
630 } | 674 } |
631 | 675 |
632 static void do_normal(GtkWidget *normal, GtkWidget *entry) | 676 static void do_normal(GtkWidget *normal, GtkWidget *entry) |
633 { | 677 { |
634 if (state_lock) | 678 if (state_lock) |
638 | 682 |
639 static void do_big(GtkWidget *big, GtkWidget *entry) | 683 static void do_big(GtkWidget *big, GtkWidget *entry) |
640 { | 684 { |
641 if (state_lock) | 685 if (state_lock) |
642 return; | 686 return; |
643 surround(entry, "<FONT SIZE=\"+5\">","</FONT>"); | 687 surround(entry, "<FONT SIZE=\"5\">","</FONT>"); |
644 } | 688 } |
645 | 689 |
646 void check_everything(GtkWidget *entry) | 690 void check_everything(GtkWidget *entry) |
647 { | 691 { |
648 struct conversation *c; | 692 struct conversation *c; |
882 gtk_widget_show(paned); | 926 gtk_widget_show(paned); |
883 | 927 |
884 entry = gtk_text_new(NULL, NULL); | 928 entry = gtk_text_new(NULL, NULL); |
885 gtk_text_set_editable(GTK_TEXT(entry), TRUE); | 929 gtk_text_set_editable(GTK_TEXT(entry), TRUE); |
886 gtk_text_set_word_wrap(GTK_TEXT(entry), TRUE); | 930 gtk_text_set_word_wrap(GTK_TEXT(entry), TRUE); |
887 | 931 |
888 /* Toolbar */ | 932 /* Toolbar */ |
889 toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); | 933 toolbar = gtk_toolbar_new(GTK_ORIENTATION_HORIZONTAL, GTK_TOOLBAR_ICONS); |
890 | 934 |
891 link_i = gdk_pixmap_create_from_xpm_d(win->window, &mask, | 935 link_i = gdk_pixmap_create_from_xpm_d(win->window, &mask, |
892 &win->style->white, link_xpm ); | 936 &win->style->white, link_xpm ); |
1091 | 1135 |
1092 gtk_signal_connect(GTK_OBJECT(win), "delete_event", GTK_SIGNAL_FUNC(delete_event_convo), c); | 1136 gtk_signal_connect(GTK_OBJECT(win), "delete_event", GTK_SIGNAL_FUNC(delete_event_convo), c); |
1093 gtk_signal_connect(GTK_OBJECT(entry), "insert-text", GTK_SIGNAL_FUNC(check_spelling), entry); | 1137 gtk_signal_connect(GTK_OBJECT(entry), "insert-text", GTK_SIGNAL_FUNC(check_spelling), entry); |
1094 gtk_signal_connect(GTK_OBJECT(entry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), entry); | 1138 gtk_signal_connect(GTK_OBJECT(entry), "key_press_event", GTK_SIGNAL_FUNC(entry_key_pressed), entry); |
1095 | 1139 |
1140 set_font_face(NULL, c); | |
1141 | |
1096 gtk_widget_show(win); | 1142 gtk_widget_show(win); |
1097 | 1143 } |
1098 } | 1144 |
1099 | 1145 |
1100 |