Changeset 2321 for trunk/jons-gtk-gui
- Timestamp:
- 10/22/00 00:17:48 (8 years ago)
- Location:
- trunk/jons-gtk-gui/src
- Files:
-
- 10 modified
-
away_window.cpp (modified) (1 diff)
-
chat_window.cpp (modified) (22 diffs)
-
contact_list.cpp (modified) (15 diffs)
-
convo.cpp (modified) (2 diffs)
-
file_window.cpp (modified) (2 diffs)
-
licq_gtk.h (modified) (9 diffs)
-
log_window.cpp (modified) (3 diffs)
-
Makefile.am (modified) (1 diff)
-
option_window.cpp (modified) (9 diffs)
-
pipe.cpp (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/jons-gtk-gui/src/away_window.cpp
r2092 r2321 184 184 /* Append it to gslist */ 185 185 catcher = g_slist_append(catcher, uaw->etag); 186 187 g_free(title); 186 188 } 187 189 -
trunk/jons-gtk-gui/src/chat_window.cpp
r2128 r2321 28 28 GSList *rc_list; 29 29 30 // Only needs to be in this scope31 30 typedef list<chat_window *> ChatDlgList; 32 31 ChatDlgList chat_list; … … 351 350 gUserManager.DropUser(u); 352 351 353 label =gtk_label_new(g_strdup_printf("Chat with %s (%ld)\nReason:\n%s", 354 alias, uin, c_event->Text())); 352 gchar *forLabel = g_strdup_printf("Chat with %s (%ld)\nReason:\n%s", 353 alias, uin, c_event->Text()); 354 label =gtk_label_new(forLabel); 355 g_free(forLabel); 355 356 356 357 gtk_container_add(GTK_CONTAINER(GTK_DIALOG(r_cr->dialog)->vbox), label); … … 464 465 465 466 /* Take care of the font now */ 466 cw-> font_remote= gdk_font_load("-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1");467 str cpy(cw->font_name, "helvetica");468 cw-> font_size = 120;467 cw->r_font = gdk_font_load("-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1"); 468 strncpy(cw->r_font_name, "helvetica", 50); 469 cw->r_font_size = 120; 469 470 470 471 /* Take care of creating the colors now */ 471 cw->back_color = new GdkColor; 472 cw->fore_color = new GdkColor; 472 cw->r_back_color = new GdkColor; 473 cw->r_fore_color = new GdkColor; 474 cw->l_back_color = new GdkColor; 475 cw->l_fore_color = new GdkColor; 473 476 474 477 /* Default background color */ 475 cw-> back_color->red = 257 * cw->chatman->ColorBg()[0];476 cw-> back_color->green = 257 * cw->chatman->ColorBg()[1];477 cw-> back_color->blue = 257 * cw->chatman->ColorBg()[2];478 cw->r_back_color->red = 257 * cw->chatman->ColorBg()[0]; 479 cw->r_back_color->green = 257 * cw->chatman->ColorBg()[1]; 480 cw->r_back_color->blue = 257 * cw->chatman->ColorBg()[2]; 478 481 479 482 /* Default foreground color */ 480 cw-> fore_color->red = 257 * cw->chatman->ColorFg()[0];481 cw-> fore_color->green = 257 * cw->chatman->ColorFg()[1];482 cw-> fore_color->blue = 257 * cw->chatman->ColorFg()[2];483 cw->r_fore_color->red = 257 * cw->chatman->ColorFg()[0]; 484 cw->r_fore_color->green = 257 * cw->chatman->ColorFg()[1]; 485 cw->r_fore_color->blue = 257 * cw->chatman->ColorFg()[2]; 483 486 484 487 ICQUser *u = gUserManager.FetchUser(uin, LOCK_R); … … 531 534 /* Create the local frame with local text box */ 532 535 ICQOwner *o = gUserManager.FetchOwner(LOCK_R); 533 cw->frame_local = gtk_frame_new(g_strdup_printf("Local - %s", 534 o->GetAlias())); 536 537 gchar *forLFrame = g_strdup_printf("Local - %s", o->GetAlias()); 538 cw->frame_local = gtk_frame_new(forLFrame); 539 g_free(forLFrame); 535 540 gUserManager.DropUser(o); 541 536 542 cw->text_local = gtk_text_new(NULL, NULL); 537 543 gtk_text_set_editable(GTK_TEXT(cw->text_local), TRUE); … … 613 619 { "/Chat/_Audio", "<control>A", 614 620 GtkItemFactoryCallback(chat_audio), 0, "<ToggleItem>" }, 621 // { "/Chat/_Kick", "<control>K", 622 // GtkItemFactoryCallback(chat_kick), 0, NULL}, 623 // { "/Chat/Kick _No Vote", "<control>N", 624 // GtkItemFactoryCallback(chat_kick_no_vote), 0, NULL}, 625 { "/Chat/_Save", "<control>S", 626 GtkItemFactoryCallback(chat_save), 0, NULL}, 615 627 { "/Chat/sep1", NULL, NULL, 0, "<Separator>" }, 616 628 { "/Chat/_Close", "<control>C", … … 619 631 { "/More/_Beep", "<control>B", 620 632 GtkItemFactoryCallback(chat_beep_users), 0, NULL}, 621 { "/More/Change Font", NULL,622 GtkItemFactoryCallback(chat_change_font), 0, NULL},633 // { "/More/Change Font", NULL, 634 // GtkItemFactoryCallback(chat_change_font), 0, NULL}, 623 635 }; 624 636 … … 646 658 void chat_audio(gpointer cw, guint action, GtkWidget *widget) 647 659 { 648 if(((struct chat_window *)cw)->audio) 649 ((struct chat_window *)cw)->audio = FALSE; 650 else 651 ((struct chat_window *)cw)->audio = TRUE; 660 ((struct chat_window *)cw)->audio = !((struct chat_window *)cw)->audio; 661 } 662 663 void start_kick_window(struct chat_window *cw) 664 { 665 cw->kw = g_new0(struct kick_window, 1); 666 667 // Make a window to get the user to kick. Then create a "tally" window 668 // to keep a tally of the voting. 669 cw->kw->winKick = gtk_window_new(GTK_WINDOW_DIALOG); 670 gtk_window_set_title(GTK_WINDOW(cw->kw->winKick), "Kick User"); 671 672 cw->kw->cmbUsers = gtk_combo_new(); 673 GList *users = NULL; 674 675 list<CChatUser *>::iterator iter; 676 for(iter = cw->ChatUsers.begin(); iter != cw->ChatUsers.end(); iter++) 677 { 678 gchar *temp = g_strdup_printf("%s (%ld)", (*iter)->Name(), 679 (*iter)->Uin()); 680 g_list_append(users, temp); 681 g_free(temp); 682 } 683 684 gtk_combo_set_popdown_strings(GTK_COMBO(cw->kw->cmbUsers), users); 685 686 gtk_entry_set_editable(GTK_ENTRY(GTK_COMBO(cw->kw->cmbUsers)->entry), false); 687 688 cw->kw->btnKick = gtk_button_new_with_label("Kick"); 689 GtkWidget *btnCancel = gtk_button_new_with_label("Cancel"); 690 691 // Leave the "clicked" signal for btnKick to each function 692 // since it varies 693 gtk_signal_connect(GTK_OBJECT(btnCancel), "clicked", 694 GTK_SIGNAL_FUNC(dialog_close), cw->kw->winKick); 695 gtk_signal_connect(GTK_OBJECT(cw->kw->winKick), "destroy", 696 GTK_SIGNAL_FUNC(dialog_close), cw->kw->winKick); 697 698 GtkWidget *tblTable = gtk_table_new(2, 2, false); 699 gtk_container_add(GTK_CONTAINER(cw->kw->winKick), tblTable); 700 701 // Label for the combo 702 GtkWidget *lblLabel = gtk_label_new("User:"); 703 gtk_table_attach(GTK_TABLE(tblTable), lblLabel, 0, 1, 0, 1, 704 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 705 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 706 707 // Attach the combo, and then the 2 buttons that are in a hbox 708 gtk_table_attach(GTK_TABLE(tblTable), cw->kw->cmbUsers, 1, 2, 0, 1, 709 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 710 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 711 712 GtkWidget *boxButtons = gtk_hbox_new(true, 0); 713 gtk_box_pack_start(GTK_BOX(boxButtons), cw->kw->btnKick, true, true, 5); 714 gtk_box_pack_start(GTK_BOX(boxButtons), btnCancel, true, true, 5); 715 716 gtk_table_attach(GTK_TABLE(tblTable), boxButtons, 0, 1, 1, 2, 717 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 718 GtkAttachOptions(GTK_EXPAND | GTK_FILL), 3, 3); 719 720 } 721 722 void chat_kick(gpointer _cw, guint action, GtkWidget *widget) 723 { 724 struct chat_window *cw = (struct chat_window *)_cw; 725 start_kick_window(cw); 726 727 gtk_signal_connect(GTK_OBJECT(cw->kw->btnKick), "clicked", 728 GTK_SIGNAL_FUNC(kick_callback), (gpointer)cw); 729 730 gtk_widget_show_all(cw->kw->winKick); 731 } 732 733 unsigned long start_kick_callback(struct chat_window *cw) 734 { 735 // Get their UIN and vote to kick them 736 gchar *toKick = gtk_editable_get_chars(GTK_EDITABLE(cw->kw->cmbUsers), 737 0, -1); 738 g_strreverse(toKick); 739 740 // The '(' 741 toKick++; 742 743 // Stop at the ')' 744 char *stop = ")"; 745 unsigned long Uin = strtoul(toKick, &stop, 10); 746 return Uin; 747 } 748 749 void kick_callback(GtkWidget *widget, gpointer _cw) 750 { 751 struct chat_window *cw = (struct chat_window *)_cw; 752 unsigned long Uin = start_kick_callback(cw); 753 754 cw->chatman->SendKick(Uin); 755 756 // Close the kick window 757 gtk_widget_destroy(cw->kw->winKick); 758 759 // Create a tally window 760 } 761 762 void chat_kick_no_vote(gpointer _cw, guint action, GtkWidget *widget) 763 { 764 struct chat_window *cw = (struct chat_window *)_cw; 765 start_kick_window(cw); 766 767 gtk_signal_connect(GTK_OBJECT(cw->kw->btnKick), "clicked", 768 GTK_SIGNAL_FUNC(kick_no_vote_callback), (gpointer)cw); 769 770 gtk_widget_show_all(cw->kw->winKick); 771 } 772 773 void kick_no_vote_callback(GtkWidget *widget, gpointer _cw) 774 { 775 struct chat_window *cw = (struct chat_window *)_cw; 776 unsigned long Uin = start_kick_callback(cw); 777 778 cw->chatman->SendKickNoVote(Uin); 779 780 // Close the kick window 781 gtk_widget_destroy(cw->kw->winKick); 782 783 // Create the tally window 784 } 785 786 void chat_save(gpointer _cw, guint action, GtkWidget *widget) 787 { 788 struct chat_window *cw = (struct chat_window *)_cw; 789 790 GtkWidget *dlg_save_chat = gtk_file_selection_new("Licq - Save Chat"); 791 792 // Connect the signals 793 gtk_signal_connect( 794 GTK_OBJECT(GTK_FILE_SELECTION(dlg_save_chat)->ok_button), 795 "clicked", GTK_SIGNAL_FUNC(save_chat_ok), 796 _cw); 797 gtk_signal_connect( 798 GTK_OBJECT(GTK_FILE_SELECTION(dlg_save_chat)->cancel_button), 799 "clicked", GTK_SIGNAL_FUNC(save_chat_cancel), 800 NULL); 801 gtk_signal_connect(GTK_OBJECT(dlg_save_chat), "delete_event", 802 GTK_SIGNAL_FUNC(save_chat_cancel), NULL); 803 804 gtk_widget_show_all(dlg_save_chat); 805 } 806 807 void save_chat_ok(GtkWidget *widget, gpointer _cw) 808 { 809 struct chat_window *cw = (struct chat_window *)_cw; 810 } 811 812 void save_chat_cancel(GtkWidget *widget, gpointer data) 813 { 652 814 } 653 815 … … 671 833 } 672 834 835 // We are unwanted now 673 836 if(cw->chatman->ConnectedUsers() == 0) 837 { 838 // XXX Ask if the user wants to save the chat should go here 674 839 gtk_widget_destroy(cw->window); 840 delete cw->r_back_color; 841 delete cw->r_fore_color; 842 delete cw->l_back_color; 843 delete cw->l_fore_color; 844 } 675 845 } 676 846 … … 694 864 case CHAT_DISCONNECTION: 695 865 { 696 message_box(g_strdup_printf("%s closed " 697 "connection", user->Name())); 866 // list<CChatUser *>::iterator iter; 867 // for(iter = cw->ChatUsers.begin(); 868 // iter != cw->ChatUsers.end(); ++iter) 869 // { 870 // if((*iter)->Uin() == user->Uin()) 871 // cw->ChatUsers.erase(iter); 872 // } 873 874 gchar *temp = g_strdup_printf("%s closed " 875 "connection", user->Name()); 876 message_box(temp); 877 g_free(temp); 878 698 879 chat_close((gpointer)cw, 0, NULL); 699 880 break; 700 881 } 701 882 883 case CHAT_DISCONNECTIONxKICKED: 884 { 885 // list<CChatUser *>::iterator iter; 886 // for(iter = cw->ChatUsers.begin(); 887 // iter != cw->ChatUsers.end(); ++iter) 888 // { 889 // if((*iter)->Uin() == user->Uin()) 890 // cw->ChatUsers.erase(iter); 891 // } 892 893 gchar *temp = g_strdup_printf("%s was kicked", 894 user->Name()); 895 message_box(temp); 896 g_free(temp); 897 898 chat_close((gpointer)cw, 0, NULL); 899 break; 900 } 901 902 case CHAT_KICKxYOU: 903 { 904 gchar *temp = g_strdup_printf("You have been kicked!"); 905 message_box(temp); 906 g_free(temp); 907 908 break; 909 } 910 702 911 case CHAT_CONNECTION: 703 912 { 913 // cw->ChatUsers.push_back(user); 704 914 gchar *filler[1]; 705 915 filler[0] = const_cast<char *>(user->Name()); … … 722 932 } 723 933 934 gchar *temp = g_strdup_printf("Remote - %s", 935 user->Name()); 724 936 gtk_frame_set_label( 725 GTK_FRAME(cw->frame_remote), 726 g_strdup_printf("Remote - %s", 727 user->Name())); 937 GTK_FRAME(cw->frame_remote), temp); 938 g_free(temp); 728 939 729 940 /* Get their back color */ 730 cw->back_color->red = 257 * user->ColorBg()[0]; 731 cw->back_color->green = 257 * user->ColorBg()[1]; 732 cw->back_color->blue = 257 * user->ColorBg()[2]; 941 cw->r_back_color->red = 942 257 * user->ColorBg()[0]; 943 cw->r_back_color->green = 944 257 * user->ColorBg()[1]; 945 cw->r_back_color->blue = 946 257 * user->ColorBg()[2]; 733 947 734 948 /* Get their fore color */ 735 cw->fore_color->red = 257 * user->ColorFg()[0]; 736 cw->fore_color->green = 257 * user->ColorFg()[1]; 737 cw->fore_color->blue = 257 * user->ColorFg()[2]; 949 cw->r_fore_color->red = 950 257 * user->ColorFg()[0]; 951 cw->r_fore_color->green = 952 257 * user->ColorFg()[1]; 953 cw->r_fore_color->blue = 954 257 * user->ColorFg()[2]; 738 955 739 956 break; … … 750 967 751 968 /* Add it to the irc view */ 969 gchar *temp = g_strdup_printf("%s> ", 970 user->Name()); 752 971 gtk_text_insert(GTK_TEXT(cw->text_irc), 753 cw->font_remote, 754 cw->fore_color, 755 cw->back_color, 756 g_strdup_printf("%s> ", 757 user->Name()), 758 -1); 972 cw->r_font, 973 cw->r_fore_color, 974 cw->r_back_color, 975 temp, -1); 976 g_free(temp); 977 978 temp = g_strdup_printf("%s\n", e->Data()); 759 979 gtk_text_insert(GTK_TEXT(cw->text_irc), 760 cw->font_remote, 761 cw->fore_color, 762 cw->back_color, 763 g_strdup_printf("%s\n", 764 e->Data()), 765 -1); 980 cw->r_font, 981 cw->r_fore_color, 982 cw->r_back_color, 983 temp, -1); 984 g_free(temp); 766 985 break; 767 986 } … … 778 997 gtk_text_insert( 779 998 GTK_TEXT(cw->text_remote), 780 cw-> font_remote,781 cw-> fore_color,782 cw-> back_color,999 cw->r_font, 1000 cw->r_fore_color, 1001 cw->r_back_color, 783 1002 "<Beep Beep!>\n", 784 1003 -1); 785 1004 1005 gchar *temp = g_strdup_printf( 1006 "%s> <Beep Beep!>\n", 1007 user->Name()); 786 1008 gtk_text_insert(GTK_TEXT(cw->text_irc), 787 1009 0, 0, 0, 788 "<Beep Beep!>\n",789 -1);1010 temp, -1); 1011 g_free(temp); 790 1012 } 791 1013 1014 break; 1015 } 1016 1017 case CHAT_LAUGH: 1018 { 792 1019 break; 793 1020 } … … 810 1037 { 811 1038 gtk_text_insert(GTK_TEXT(cw->text_remote), 812 cw-> font_remote,813 cw-> fore_color,814 cw-> back_color,1039 cw->r_font, 1040 cw->r_fore_color, 1041 cw->r_back_color, 815 1042 e->Data(), -1); 816 1043 } … … 823 1050 if(user == cw->chat_user) 824 1051 { 825 cw-> fore_color->red =1052 cw->r_fore_color->red = 826 1053 257 * user->ColorFg()[0]; 827 cw-> fore_color->green =1054 cw->r_fore_color->green = 828 1055 257 * user->ColorFg()[1]; 829 cw-> fore_color->blue =1056 cw->r_fore_color->blue = 830 1057 257 * user->ColorFg()[2]; 831 1058 } … … 838 1065 if(user == cw->chat_user) 839 1066 { 840 cw-> back_color->red =1067 cw->r_back_color->red = 841 1068 257 * user->ColorBg()[0]; 842 cw-> back_color->green =1069 cw->r_back_color->green = 843 1070 257 * user->ColorBg()[1]; 844 cw-> back_color->blue =1071 cw->r_back_color->blue = 845 1072 257 * user->ColorBg()[2]; 846 1073 } … … 851 1078 case CHAT_FONTxFAMILY: 852 1079 { 853 strcpy(cw->font_name, user->FontFamily()); 854 cw->font_remote = gdk_font_load( 855 g_strdup_printf("-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 856 cw->font_name, 857 cw->remote_bold ? "bold" : "medium", 858 cw->remote_italic ? 'i' : 'r', 859 cw->font_size)); 1080 strncpy(cw->r_font_name, user->FontFamily(), 50); 1081 gchar *temp = g_strdup_printf( 1082 "-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 1083 cw->r_font_name, 1084 cw->r_bold ? "bold" : "medium", 1085 cw->r_italic ? 'i' : 'r', 1086 cw->r_font_size); 1087 cw->r_font = gdk_font_load(temp); 1088 g_free(temp); 860 1089 861 1090 break; … … 866 1095 if(user == cw->chat_user) 867 1096 { 868 user->FontBold() ? cw->remote_bold = TRUE :869 cw->remote_bold = FALSE;870 user->FontItalic() ? cw->remote_italic = TRUE871 : cw->remote_italic = FALSE;1097 user->FontBold() ? cw->r_bold = TRUE : 1098 cw->r_bold = FALSE; 1099 user->FontItalic() ? cw->r_italic = TRUE : 1100 cw->r_italic = FALSE; 872 1101 873 cw->font_remote = gdk_font_load( 874 g_strdup_printf( 875 "-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 876 cw->font_name, 877 cw->remote_bold ? "bold" : "medium", 878 cw->remote_italic ? 'i' : 'r', 879 cw->font_size)); 1102 gchar *temp = g_strdup_printf( 1103 "-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 1104 cw->r_font_name, 1105 cw->r_bold ? "bold" : "medium", 1106 cw->r_italic ? 'i' : 'r', 1107 cw->r_font_size); 1108 cw->r_font = gdk_font_load(temp); 1109 g_free(temp); 880 1110 } 881 1111 … … 887 1117 if(user == cw->chat_user) 888 1118 { 889 cw->font_size = 10 * user->FontSize(); 890 cw->font_remote = gdk_font_load( 891 g_strdup_printf("-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 892 cw->font_name, 893 cw->remote_bold ? "bold" : "medium", 894 cw->remote_italic ? 'i' : 'r', 895 cw->font_size)); 1119 cw->r_font_size = 10 * user->FontSize(); 1120 1121 gchar *temp = g_strdup_printf("-*-%s-%s-%c-normal--*-%d-*-*-*-*-iso8859-1", 1122 cw->r_font_name, 1123 cw->r_bold ? "bold" : "medium", 1124 cw->r_italic ? 'i' : 'r', 1125 cw->r_font_size); 1126 cw->r_font = gdk_font_load(temp); 1127 g_free(temp); 896 1128 } 897 1129 898 1130 break; 899 1131 } 1132 1133 case CHAT_FOCUSxOUT: 1134 { 1135 if(user == cw->chat_user) 1136 { 1137 gchar *new_text = 1138 g_strdup_printf( 1139 "Remote - %s - Away", 1140 user->Name()); 1141 gtk_frame_set_label(GTK_FRAME( 1142 cw->frame_remote), new_text); 1143 g_free(new_text); 1144 } 1145 1146 break; 1147 } 1148 1149 case CHAT_FOCUSxIN: 1150 { 1151 if(user == cw->chat_user) 1152 { 1153 gchar *new_text = 1154 g_strdup_printf( 1155 "Remote - %s", 1156 user->Name()); 1157 gtk_frame_set_label(GTK_FRAME( 1158 cw->frame_remote), new_text); 1159 g_free(new_text); 1160 } 1161 1162 break; 1163 } 1164 1165 case CHAT_SLEEPxON: 1166 { 1167 if(user == cw->chat_user) 1168 { 1169 gchar *new_text = 1170 g_strdup_printf( 1171 "Remote - %s - Sleep", 1172 user->Name()); 1173 gtk_frame_set_label(GTK_FRAME( 1174 cw->frame_remote), new_text); 1175 g_free(new_text); 1176 } 1177 1178 break; 1179 } 1180 1181 case CHAT_SLEEPxOFF: 1182 { 1183 if(user == cw->chat_user) 1184 { 1185 gchar *new_text = 1186 g_strdup_printf( 1187 "Remote - %s", 1188 user->Name()); 1189 gtk_frame_set_label(GTK_FRAME( 1190 cw->frame_remote), new_text); 1191 g_free(new_text); 1192 } 1193 1194 break; 1195 &nbs
