ayttm-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Ayttm-commits] CVS: ayttm/src about.c,1.9,1.10 add_contact_window.c,1.


From: Colin Leroy <address@hidden>
Subject: [Ayttm-commits] CVS: ayttm/src about.c,1.9,1.10 add_contact_window.c,1.7,1.8 away_window.c,1.6,1.7 chat_room.c,1.11,1.12 chat_room.h,1.3,1.4 chat_window.c,1.12,1.13 dialog.c,1.6,1.7 edit_group_window.c,1.5,1.6 editcontacts.c,1.11,1.12
Date: Fri, 10 Jan 2003 07:25:34 -0500

Update of /cvsroot/ayttm/ayttm/src
In directory subversions:/tmp/cvs-serv5865/src

Modified Files:
        about.c add_contact_window.c away_window.c chat_room.c 
        chat_room.h chat_window.c dialog.c edit_group_window.c 
        editcontacts.c 
Log Message:
Multiline edit in chat room, forgotten commits


Index: about.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/about.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- about.c     9 Jan 2003 09:20:21 -0000       1.9
+++ about.c     10 Jan 2003 12:25:32 -0000      1.10
@@ -208,7 +208,7 @@
        gtk_container_add(GTK_CONTAINER(sAboutWindow), GTK_WIDGET(vbox));
 
        gtk_widget_show(sAboutWindow);
-       gtk_window_set_focus(GTK_WINDOW(sAboutWindow), ok);
+       gtk_widget_grab_focus(ok);
 
 }
 

Index: add_contact_window.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/add_contact_window.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- add_contact_window.c        6 Jan 2003 14:11:50 -0000       1.7
+++ add_contact_window.c        10 Jan 2003 12:25:32 -0000      1.8
@@ -471,7 +471,7 @@
                gtk_widget_show(table);
       
                gtk_window_set_title(GTK_WINDOW(add_contact_window), _("Yattm - 
Add Contact"));
-               gtk_window_set_focus(GTK_WINDOW(add_contact_window), 
account_name);
+               gtk_widget_grab_focus(account_name);
                eb_icon(add_contact_window->window);
                gtk_widget_show(add_contact_window);
       

Index: away_window.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/away_window.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- away_window.c       9 Jan 2003 09:20:22 -0000       1.6
+++ away_window.c       10 Jan 2003 12:25:32 -0000      1.7
@@ -389,7 +389,7 @@
                gtk_window_set_policy(GTK_WINDOW(away_window), FALSE, FALSE, 
TRUE);             
                
                gtk_widget_show(away_window);
-               gtk_window_set_focus(GTK_WINDOW(away_window), title);
+               gtk_widget_grab_focus(title);
 
        }
 

Index: chat_room.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/chat_room.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- chat_room.c 9 Jan 2003 09:20:22 -0000       1.11
+++ chat_room.c 10 Jan 2003 12:25:32 -0000      1.12
@@ -4,6 +4,7 @@
 
 #include <string.h>
 #include "globals.h"
+#include <gdk/gdkkeysyms.h>
 #include "intl.h"
 #include "gtk_eb_html.h"
 #include "util.h"
@@ -24,13 +25,127 @@
 static void send_cr_message( GtkWidget * widget, gpointer data )
 {
        eb_chat_room * ecr = (eb_chat_room *)data;
+       char *text = gtk_editable_get_chars(GTK_EDITABLE(ecr->entry), 0, -1);
+       
+       if (!text || strlen(text) == 0)
+               return;
+       RUN_SERVICE(ecr->chat_room_account)->send_chat_room_message(ecr,text);
+
+       if(ecr->this_msg_in_history)
+       {
+               GList * node=NULL;
+               GList * node2=NULL;
 
-       RUN_SERVICE(ecr->chat_room_account)->send_chat_room_message(ecr,
-                                               
gtk_entry_get_text(GTK_ENTRY(ecr->entry)));
+               for(node=ecr->history; node!=NULL ; node=node->next)
+               {
+                       node2=node;
+               }
+               free(node2->data);
+               node2->data=strdup(text);
+               ecr->this_msg_in_history=0;
+       } else {
+               ecr->history=g_list_append(ecr->history, strdup(text));
+               ecr->hist_pos=NULL;
+       }
 
+       
+       g_free(text);
        if(ecr->sound_enabled && ecr->send_enabled)
                play_sound(SEND);
-       gtk_entry_set_text(GTK_ENTRY(ecr->entry), "");
+       gtk_editable_delete_text(GTK_EDITABLE (ecr->entry), 0, -1);
+}
+
+static gboolean cr_key_press(GtkWidget *widget, GdkEventKey *event, gpointer 
data)
+{
+  eb_chat_room *cr = (eb_chat_room *)data;
+  GdkModifierType modifiers = event->state & (GDK_SHIFT_MASK | 
GDK_CONTROL_MASK | GDK_MOD1_MASK | GDK_MOD4_MASK);
+
+  if (event->keyval == GDK_Return)
+    {
+      /* Just print a newline on Shift-Return */
+      if (event->state & GDK_SHIFT_MASK)
+       {
+         event->state = 0;
+       }
+      else if (do_enter_send)
+       {
+         /*Prevents a newline from being printed*/
+         gtk_signal_emit_stop_by_name(GTK_OBJECT(widget), "key_press_event");
+
+         send_cr_message(NULL, cr);
+         return gtk_true();
+       }
+    }
+  else if (event->keyval == GDK_Up)
+    {
+      gint p=0;
+
+      if(cr->history==NULL) { return gtk_true(); }
+
+      if(cr->hist_pos==NULL)
+      {
+        char * s;
+        GList * node;
+
+        s= gtk_editable_get_chars(GTK_EDITABLE (cr->entry), 0, -1);
+
+        for(node=cr->history; node!=NULL ; node=node->next)
+        {
+          cr->hist_pos=node;
+        }
+
+        if(strlen(s)>0)
+        {
+          cr->history=g_list_append(cr->history, strdup(s));
+          //cr->hist_pos=cr->history->next;
+          g_free(s); // that strdup() followed by g_free() looks stupid, but 
it isn't
+                        // - strdup() uses vanilla malloc(), and the destroy 
code uses
+                        // vanilla free(), so we can't use something that 
needs to be
+                        // g_free()ed (apparently glib uses an incompatible 
allocation
+                        //system
+          cr->this_msg_in_history=1;
+        }
+
+      } else {
+        cr->hist_pos=cr->hist_pos->prev;
+        if(cr->hist_pos==NULL)
+        {
+          GList * node;
+          eb_debug(DBG_CORE,"history Wrapped!\n");
+          for(node=cr->history; node!=NULL ; node=node->next)
+          {
+            cr->hist_pos=node;
+          }
+        }
+      }
+
+      gtk_editable_delete_text(GTK_EDITABLE (cr->entry), 0, -1);
+      gtk_editable_insert_text(GTK_EDITABLE (cr->entry), cr->hist_pos->data, 
strlen(cr->hist_pos->data), &p);
+    }
+  else if (event->keyval == GDK_Down)
+    {
+      gint p=0;
+
+      if(cr->history==NULL || cr->hist_pos==NULL) { return gtk_true(); }
+      cr->hist_pos=cr->hist_pos->next;
+      if(cr->hist_pos==NULL)
+      {
+        gtk_editable_delete_text(GTK_EDITABLE (cr->entry), 0, -1);
+      } else {
+        gtk_editable_delete_text(GTK_EDITABLE (cr->entry), 0, -1);
+        gtk_editable_insert_text(GTK_EDITABLE (cr->entry), cr->hist_pos->data, 
strlen(cr->hist_pos->data), &p);
+      }
+    }
+
+  if(modifiers)
+  { return gtk_false(); }
+
+  if(!modifiers)
+  {
+   // send_typing_status(cr);
+  }
+
+  return gtk_false();
 }
 
 static void set_sound_on_toggle(GtkWidget * sound_button, gpointer userdata)
@@ -323,7 +438,7 @@
 
        gtk_widget_show(join_chat_window);
 
-       gtk_window_set_focus(GTK_WINDOW(join_chat_window), chat_room_name);
+       gtk_widget_grab_focus(chat_room_name);
        
        gtk_signal_connect( GTK_OBJECT(join_chat_window), "destroy",
                                GTK_SIGNAL_FUNC(join_chat_destroy), NULL );
@@ -443,7 +558,7 @@
 }
 
 void eb_chat_room_show_message( eb_chat_room * chat_room,
-                                                               gchar * user, 
gchar * message )
+                               gchar * user, gchar * message )
 {
        gchar buff[2048];
        gchar *temp_message, *link_message;
@@ -521,7 +636,7 @@
        GtkWidget * sound_button;
        GtkWidget * close_button;
        GtkWidget * separator;
-       
+       GtkWidget * entry_box;
        /*if we are already here, just leave*/
        if(chat_room->connected)
                return;
@@ -545,16 +660,49 @@
                                                                   
GTK_POLICY_NEVER, GTK_POLICY_ALWAYS);
 
        /*make ourselves something to type into*/
-       chat_room->entry = gtk_entry_new();
+       entry_box = gtk_vbox_new(FALSE,0);
+       if(do_multi_line) {
+               GtkWidget *scrollwindow2 = gtk_scrolled_window_new(NULL, NULL);
+               gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW 
(scrollwindow2), 
+                                            GTK_POLICY_NEVER, 
GTK_POLICY_AUTOMATIC);
+               
+               chat_room->entry = gtk_text_new(NULL, NULL);
+
+               gtk_widget_set_usize(chat_room->entry, -1, 50);
+
+               gtk_text_set_editable(GTK_TEXT(chat_room->entry), TRUE);
+               gtk_text_set_word_wrap(GTK_TEXT(chat_room->entry), TRUE);
+               gtk_text_set_line_wrap(GTK_TEXT(chat_room->entry), TRUE);
 
-       gtk_signal_connect(GTK_OBJECT(chat_room->entry), "activate",
+               #ifdef HAVE_ISPELL
+               if(do_spell_checking)
+               {
+                 if(!gtkspell_running())
+                   {
+                     gchar *ispell_cmd[] = { "ispell", "-a", NULL };
+                     gtkspell_start(NULL, ispell_cmd);
+                   }
+                 gtkspell_attach(GTK_TEXT(chat_room->entry));
+               }
+               #endif
+
+               gtk_signal_connect(GTK_OBJECT(chat_room->entry), 
"key_press_event",
+                                GTK_SIGNAL_FUNC(cr_key_press),
+                                chat_room);
+
+               
gtk_container_add(GTK_CONTAINER(scrollwindow2),chat_room->entry);
+               gtk_widget_show(scrollwindow2);
+               gtk_box_pack_start(GTK_BOX(entry_box), scrollwindow2, TRUE, 
TRUE, 3);
+       } else {
+               chat_room->entry = gtk_entry_new();
+
+               gtk_signal_connect(GTK_OBJECT(chat_room->entry), "activate",
                                                
GTK_SIGNAL_FUNC(send_cr_message), chat_room );
+               gtk_box_pack_start(GTK_BOX(entry_box), chat_room->entry, TRUE, 
TRUE, 3);
+       }
+       
        
 
-       /*
-       gtk_box_pack_start(GTK_BOX(hbox), scrollwindow, TRUE, TRUE, 3);
-       gtk_box_pack_start(GTK_BOX(hbox), chat_room->online, FALSE, FALSE, 3);
-       */
        gtk_paned_add1(GTK_PANED(hbox), scrollwindow);
        gtk_widget_show(scrollwindow);
 
@@ -587,8 +735,9 @@
 
        
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwindow),GTK_POLICY_NEVER,
 GTK_POLICY_ALWAYS);
        gtk_box_pack_start(GTK_BOX(vbox), hbox, TRUE,TRUE, 3);
-       gtk_box_pack_start(GTK_BOX(vbox), chat_room->entry, FALSE, FALSE, 1);
+       gtk_box_pack_start(GTK_BOX(vbox), entry_box, FALSE, FALSE, 1);
        gtk_widget_show(hbox);
+       gtk_widget_show(entry_box);
        gtk_widget_show(chat_room->entry);
 
        gtk_widget_realize(chat_room->window);
@@ -731,7 +880,7 @@
        }
        
        RUN_SERVICE(chat_room->chat_room_account)->join_chat_room(chat_room);
-       gtk_window_set_focus(GTK_WINDOW(chat_room->window), chat_room->entry);
+       gtk_widget_grab_focus(chat_room->entry);
 
 }
 

Index: chat_room.h
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/chat_room.h,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- chat_room.h 8 Jan 2003 20:50:09 -0000       1.3
+++ chat_room.h 10 Jan 2003 12:25:32 -0000      1.4
@@ -43,7 +43,9 @@
        GtkWidget * online;  // CList of online folks
        GtkWidget *smiley_button;
        GtkWidget *smiley_window;
-
+       GList * history;
+       GList * hist_pos;
+       int this_msg_in_history;
        GList * fellows;   //who is in the chat room
        eb_local_account * chat_room_account; //who are we talking as?
        void *protocol_local_chat_room_data; // For protocol-specific storage

Index: chat_window.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/chat_window.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- chat_window.c       9 Jan 2003 11:52:45 -0000       1.12
+++ chat_window.c       10 Jan 2003 12:25:32 -0000      1.13
@@ -1031,7 +1031,7 @@
         if(cw->hist_pos==NULL)
         {
           GList * node;
-          printf("Wrapped!\n");
+          eb_debug(DBG_CORE,"history Wrapped!\n");
           for(node=cw->history; node!=NULL ; node=node->next)
           {
             cw->hist_pos=node;
@@ -1893,8 +1893,7 @@
 
   } else {
     gdk_window_raise(remote_contact->chatwindow->window->window);        
-    gtk_window_set_focus(GTK_WINDOW(remote_contact->chatwindow->window),
-                        remote_contact->chatwindow->entry);
+    gtk_widget_grab_focus(remote_contact->chatwindow->entry);
   }
 
   eb_update_window_title(remote_contact->chatwindow, TRUE);
@@ -2018,16 +2017,12 @@
        eb_restore_last_conv (buff, remote_contact->chatwindow);
       }
       gdk_window_raise(remote_contact->chatwindow->window->window);
-      gtk_window_set_focus (GTK_WINDOW
-                           (remote_contact->chatwindow->window),
-                           remote_contact->chatwindow->entry);
+      gtk_widget_grab_focus(remote_contact->chatwindow->entry);
     }
 
   } else {
     gdk_window_raise(remote_contact->chatwindow->window->window);
-    gtk_window_set_focus (GTK_WINDOW
-                           (remote_contact->chatwindow->window),
-                           remote_contact->chatwindow->entry);
+    gtk_widget_grab_focus(remote_contact->chatwindow->entry);
   
   }
 
@@ -2072,9 +2067,7 @@
              eb_restore_last_conv(buff,remote_contact->chatwindow);    
            }
           gdk_window_raise(remote_contact->chatwindow->window->window);
-         gtk_window_set_focus (GTK_WINDOW
-                           (remote_contact->chatwindow->window),
-                             remote_contact->chatwindow->entry);
+         gtk_widget_grab_focus(remote_contact->chatwindow->entry);
        }
       else /* Did they get denied because they're in the Unknown group? */
        return;
@@ -2082,9 +2075,7 @@
   else if (remote_contact->chatwindow && remote_contact->chatwindow->window)
     {
           gdk_window_raise(remote_contact->chatwindow->window->window);
-         gtk_window_set_focus (GTK_WINDOW
-                           (remote_contact->chatwindow->window),
-                             remote_contact->chatwindow->entry);
+         gtk_widget_grab_focus(remote_contact->chatwindow->entry);
     }       
     
   eb_update_window_title(remote_contact->chatwindow, FALSE);
@@ -2102,8 +2093,7 @@
            
   } else {
     gdk_window_raise(remote_contact->chatwindow->window->window);        
-    gtk_window_set_focus(GTK_WINDOW(remote_contact->chatwindow->window),
-                        remote_contact->chatwindow->entry);
+    gtk_widget_grab_focus(remote_contact->chatwindow->entry);
   }
        
   remote_contact->chatwindow->perfered = remote_account;

Index: dialog.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/dialog.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- dialog.c    9 Jan 2003 09:20:22 -0000       1.6
+++ dialog.c    10 Jan 2003 12:25:32 -0000      1.7
@@ -361,7 +361,7 @@
     gtk_signal_connect_object(GTK_OBJECT(close), "clicked", 
GTK_SIGNAL_FUNC(gtk_widget_destroy), GTK_OBJECT(d));
        gtk_window_set_modal(GTK_WINDOW(d), TRUE);
     gtk_widget_show(d);
-    gtk_window_set_focus(GTK_WINDOW(d), close);
+    gtk_widget_grab_focus(close);
 
     return d;
 }

Index: edit_group_window.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/edit_group_window.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- edit_group_window.c 9 Jan 2003 09:20:22 -0000       1.5
+++ edit_group_window.c 10 Jan 2003 12:25:32 -0000      1.6
@@ -132,7 +132,7 @@
 
        current_group = g;
        window_open = 1;
-       gtk_window_set_focus(GTK_WINDOW(edit_group_window), group_name);
+       gtk_widget_grab_focus(group_name);
        
 }
 

Index: editcontacts.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/editcontacts.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- editcontacts.c      9 Jan 2003 09:20:22 -0000       1.11
+++ editcontacts.c      10 Jan 2003 12:25:32 -0000      1.12
@@ -524,6 +524,6 @@
        gtk_signal_connect(GTK_OBJECT(account_window), "destroy",
                                           GTK_SIGNAL_FUNC(destroy), NULL );
        gtk_widget_show(account_window);
-       gtk_window_set_focus(GTK_WINDOW(account_window), username);
+       gtk_widget_grab_focus(username);
 
 }





reply via email to

[Prev in Thread] Current Thread [Next in Thread]