Annotation of sbbs/src/sbbs3/gtkchat/callbacks.c, revision 1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.