|
|
1.1 ! root 1: #include <gtk/gtk.h> ! 2: #include <gdk/gdkkeysyms.h> ! 3: ! 4: #include "chatfuncs.h" ! 5: #include "callbacks.h" ! 6: #include "interface.h" ! 7: #include "support.h" ! 8: ! 9: gint ! 10: get_from_remote(gpointer data) ! 11: { ! 12: int ch; ! 13: gchar *outstr; ! 14: gchar instr[2]; ! 15: int inbytes; ! 16: int outbytes; ! 17: ! 18: instr[1]=0; ! 19: switch(chat_check_remote()) { ! 20: case 2: /* Chat active */ ! 21: while(ch=chat_read_byte()) { ! 22: if(ch==-1) { ! 23: chat_close(); ! 24: gtk_main_quit(); ! 25: return(FALSE); ! 26: } ! 27: if(ch==8 || ch==127) { ! 28: GtkTextIter start; ! 29: GtkTextIter end; ! 30: ! 31: gtk_text_buffer_get_iter_at_mark( ! 32: gtk_text_view_get_buffer(GTK_TEXT_VIEW(data)) ! 33: ,&start ! 34: ,gtk_text_buffer_get_insert( ! 35: gtk_text_view_get_buffer(GTK_TEXT_VIEW(data)) ! 36: ) ! 37: ); ! 38: end=start; ! 39: gtk_text_iter_backward_cursor_position(&end); ! 40: gtk_text_buffer_delete( ! 41: gtk_text_view_get_buffer(GTK_TEXT_VIEW(data)) ! 42: ,&start ! 43: ,&end ! 44: ); ! 45: } ! 46: else { ! 47: instr[0]=ch; ! 48: outstr=g_convert(instr, 1, "UTF-8", "CP437", &inbytes, &outbytes, NULL); ! 49: gtk_text_buffer_insert_at_cursor( ! 50: gtk_text_view_get_buffer(GTK_TEXT_VIEW(data)) ! 51: ,outstr ! 52: ,1 ! 53: ); ! 54: g_free(outstr); ! 55: } ! 56: } ! 57: return(TRUE); ! 58: } ! 59: chat_close(); ! 60: return(FALSE); ! 61: } ! 62: ! 63: ! 64: gint ! 65: connect_wait(gpointer data) ! 66: { ! 67: GtkWidget *MainWindow; ! 68: ! 69: switch(chat_check_remote()) { ! 70: case -1: /* Error */ ! 71: case 0: /* Remote has gone away */ ! 72: chat_close(); ! 73: return(FALSE); ! 74: case 1: /* Waiting for remote */ ! 75: return(TRUE); ! 76: case 2: /* Chat active */ ! 77: MainWindow = create_MainWindow (); ! 78: gtk_widget_hide (GTK_WIDGET(data)); ! 79: gtk_widget_show (MainWindow); ! 80: return(FALSE); ! 81: } ! 82: return(TRUE); ! 83: } ! 84: ! 85: ! 86: void ! 87: on_MainWindow_destroy (GtkObject *object, ! 88: gpointer user_data) ! 89: { ! 90: chat_close(); ! 91: gtk_main_quit(); ! 92: } ! 93: ! 94: ! 95: gboolean ! 96: on_LocalText_key_press_event (GtkWidget *widget, ! 97: GdkEventKey *event, ! 98: gpointer user_data) ! 99: { ! 100: gchar *outstr; ! 101: gchar instr[2]; ! 102: int inbytes; ! 103: int outbytes; ! 104: ! 105: if(event->keyval==GDK_BackSpace || event->keyval==GDK_Delete) { ! 106: GtkTextIter start; ! 107: GtkTextIter end; ! 108: ! 109: chat_write_byte('\b'); ! 110: gtk_text_buffer_get_iter_at_mark( ! 111: gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)) ! 112: ,&start ! 113: ,gtk_text_buffer_get_insert( ! 114: gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)) ! 115: ) ! 116: ); ! 117: end=start; ! 118: gtk_text_iter_backward_cursor_position(&end); ! 119: gtk_text_buffer_delete( ! 120: gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)) ! 121: ,&start ! 122: ,&end ! 123: ); ! 124: } ! 125: if(event->keyval >= 32 && event->keyval < 127) { ! 126: instr[1]=0; ! 127: instr[0]=event->keyval; ! 128: chat_write_byte(event->keyval); ! 129: outstr=g_convert(instr, 1, "UTF-8", "CP437", &inbytes, &outbytes, NULL); ! 130: gtk_text_buffer_insert_at_cursor( ! 131: gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)) ! 132: ,outstr ! 133: ,1 ! 134: ); ! 135: g_free(outstr); ! 136: } ! 137: if(event->keyval == GDK_Return || event->keyval == GDK_KP_Enter) { ! 138: instr[1]=0; ! 139: instr[0]='\n'; ! 140: chat_write_byte('\r'); ! 141: outstr=g_convert(instr, 1, "UTF-8", "CP437", &inbytes, &outbytes, NULL); ! 142: gtk_text_buffer_insert_at_cursor( ! 143: gtk_text_view_get_buffer(GTK_TEXT_VIEW(widget)) ! 144: ,outstr ! 145: ,1 ! 146: ); ! 147: g_free(outstr); ! 148: } ! 149: ! 150: return FALSE; ! 151: } ! 152: ! 153: ! 154: void ! 155: on_CancelButton_clicked (GtkButton *button, ! 156: gpointer user_data) ! 157: { ! 158: chat_close(); ! 159: gtk_main_quit(); ! 160: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.