[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Ayttm-commits] CVS: ayttm/src chat_room.c,1.6,1.7 chat_room.h,1.2,1.3
From: |
Colin Leroy <address@hidden> |
Subject: |
[Ayttm-commits] CVS: ayttm/src chat_room.c,1.6,1.7 chat_room.h,1.2,1.3 |
Date: |
Wed, 08 Jan 2003 15:50:11 -0500 |
Update of /cvsroot/ayttm/ayttm/src
In directory subversions:/tmp/cvs-serv31664/src
Modified Files:
chat_room.c chat_room.h
Log Message:
smiley selector
Index: chat_room.c
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/chat_room.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- chat_room.c 8 Jan 2003 19:10:22 -0000 1.6
+++ chat_room.c 8 Jan 2003 20:50:09 -0000 1.7
@@ -15,10 +15,12 @@
#include "pixmaps/cancel.xpm"
#include "pixmaps/ok.xpm"
#include "pixmaps/tb_volume.xpm"
+#include "pixmaps/smiley_button.xpm"
GList * chat_rooms = NULL;
static GList * get_contacts( eb_chat_room * room );
+
static void send_message( GtkWidget * widget, gpointer data )
{
eb_chat_room * ecr = (eb_chat_room *)data;
@@ -43,6 +45,123 @@
cr->sound_enabled = FALSE;
}
+static void insert_cr_smiley (GtkWidget * widget, eb_chat_room *cr)
+{
+ gint pos=0;
+ if(GTK_EDITABLE(cr->entry) && GTK_EDITABLE(cr->entry)->current_pos)
+ pos=GTK_EDITABLE(cr->entry)->current_pos;
+ gtk_editable_insert_text(GTK_EDITABLE (cr->entry),
+ gtk_widget_get_name(widget),
+ strlen(gtk_widget_get_name(widget)),
+ &pos);
+ gtk_editable_set_position(GTK_EDITABLE(cr->entry),
+ pos);
+ gtk_widget_destroy(cr->smiley_window);
+ cr->smiley_window = NULL;
+}
+
+static void show_cr_smileys_callback(GtkWidget *widget, gpointer d)
+{
+ eb_chat_room *data = (eb_chat_room*) d;
+ GList *smileys = NULL;
+ protocol_smiley * msmiley = NULL;
+ GtkWidget * smileys_table = NULL;
+ GtkWidget * button = NULL;
+ GtkWidget *iconwid;
+ GdkPixmap *icon;
+ GdkBitmap *mask;
+ GList *done = NULL;
+ int len = 0, real_len = 0, x=-1, y=0;
+ int win_w=0, win_h=0, w, h;
+ gint win_x, win_y;
+ if(data->smiley_window != NULL) {
+ /* close popup */
+ gtk_widget_destroy(data->smiley_window);
+ data->smiley_window = NULL;
+ return;
+ }
+
+ if (data && data->chat_room_account && RUN_SERVICE(data->chat_room_account))
+ smileys = RUN_SERVICE(data->chat_room_account)->get_smileys();
+ else
+ return;
+ len = g_list_length(smileys);
+ smileys_table = gtk_table_new(5,len/5 +((len%5==0)?1:2),TRUE);
+ for(;smileys;smileys=g_list_next(smileys)) {
+ GList * l;
+ gboolean already_done = FALSE;
+ smiley * dsmile = NULL;
+ msmiley = (smileys->data);
+ for(l=done; l; l=g_list_next(l)) {
+ if(!strcmp((char*)l->data, msmiley->name)) {
+ already_done = TRUE;
+ break;
+ }
+ }
+
+ if(already_done)
+ continue;
+
+ done = g_list_append(done, msmiley->name);
+
+ dsmile = get_smiley_by_name(msmiley->name);
+ if(dsmile != NULL) {
+ icon = gdk_pixmap_create_from_xpm_d(data->window->window, &mask,
NULL, dsmile->pixmap);
+ iconwid = gtk_pixmap_new(icon, mask);
+ sscanf (dsmile->pixmap [0], "%d %d", &w, &h);
+ if(x<5) {
+ x++;
+ if(y==0) win_h+=h+2;
+ }
+ if(x==5) {
+ y++;
+ x=0;
+ if(x==0) win_w+=w+2;
+ }
+ gtk_widget_show(iconwid);
+ button = gtk_button_new();
+ gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
+ gtk_container_add(GTK_CONTAINER(button), iconwid);
+ gtk_widget_show(button);
+ gtk_widget_set_name(button,msmiley->text);
+ gtk_signal_connect (GTK_OBJECT (button), "clicked",
+ GTK_SIGNAL_FUNC (insert_cr_smiley), data);
+ gtk_table_attach(GTK_TABLE(smileys_table),
+ button,
+ y,y+1,
+ x,x+1,
+ GTK_FILL, GTK_FILL, 0, 0);
+ real_len++;
+ }
+ }
+
+ g_list_free(done);
+ done = NULL;
+ gtk_table_resize(GTK_TABLE(smileys_table), 5,real_len/5
+((real_len%5==0)?0:1));
+
+ data->smiley_window = gtk_window_new(GTK_WINDOW_DIALOG);
+ gtk_window_set_modal(GTK_WINDOW(data->smiley_window), FALSE);
+ gtk_window_set_wmclass(GTK_WINDOW(data->smiley_window), "yattm-chat",
"Yattm");
+ gtk_window_set_title(GTK_WINDOW(data->smiley_window), "Smileys");
+ gtk_window_set_policy(GTK_WINDOW(data->smiley_window), FALSE, FALSE, FALSE);
+ gtk_widget_realize(data->smiley_window);
+
+ gtk_widget_show(data->smiley_window);
+
+ gtk_container_add(GTK_CONTAINER(data->smiley_window), smileys_table);
+ gtk_widget_show(smileys_table);
+
+ /* move the window a bit after the cursor and in the screen */
+ gdk_window_get_pointer (NULL, &win_x, &win_y, NULL);
+ win_x += 5; win_y += 5;
+ while ((win_x)+win_w > gdk_screen_width() - 30)
+ win_x -= 20;
+ while ((win_y)+win_h > gdk_screen_height() - 30)
+ win_y -= 20;
+ gdk_window_move_resize(data->smiley_window->window, win_x, win_y, win_w,
win_h);
+
+}
+
static GList * chat_service_list()
{
GList * list = NULL;
@@ -484,6 +603,11 @@
static void destroy_chat_window(GtkWidget * widget, gpointer data)
{
eb_chat_room * ecr = data;
+ if(ecr->smiley_window != NULL && ecr->smiley_window->window != NULL) {
+ /* close smileys popup */
+ gtk_widget_destroy(ecr->smiley_window);
+ ecr->smiley_window = NULL;
+ }
gtk_widget_destroy(ecr->window);
}
@@ -590,6 +714,29 @@
gtk_container_set_border_width(GTK_CONTAINER(toolbar), 0);
gtk_toolbar_set_space_size(GTK_TOOLBAR(toolbar), 5);
+ /* smileys */
+ if(do_smiley == 1) {
+ icon = gdk_pixmap_create_from_xpm_d(chat_room->window->window,
+ &mask, NULL, smiley_button_xpm);
+ iconwid = gtk_pixmap_new(icon, mask);
+ gtk_widget_show(iconwid);
+ chat_room->smiley_button =
gtk_toolbar_append_item(GTK_TOOLBAR(toolbar),
+ _("Smiley"),
+ _("Insert Smiley"),
+ _("Smiley"),
+ iconwid,
+
GTK_SIGNAL_FUNC(show_cr_smileys_callback),
+ chat_room);
+ /*Create the separator for the toolbar*/
+
+ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
+ separator = gtk_vseparator_new();
+ gtk_widget_set_usize(GTK_WIDGET(separator), 0, 20);
+ gtk_toolbar_append_widget(GTK_TOOLBAR(toolbar), separator,
NULL, NULL);
+ gtk_widget_show(separator);
+ gtk_toolbar_append_space(GTK_TOOLBAR(toolbar));
+ }
+
icon = gdk_pixmap_create_from_xpm_d(chat_room->window->window, &mask,
NULL, tb_volume_xpm);
iconwid = gtk_pixmap_new(icon, mask);
gtk_widget_show(iconwid);
@@ -669,6 +816,23 @@
chat_room->connected = 1;
/* actually call the callback :P .... */
+ if (!chat_room) {
+ eb_debug(DBG_CORE,"!chat_room\n");
+ return;
+ }
+ if (!chat_room->chat_room_account) {
+ eb_debug(DBG_CORE,"!chat_room->account\n");
+ return;
+ }
+ if (RUN_SERVICE(chat_room->chat_room_account) == NULL) {
+
eb_debug(DBG_CORE,"!RUN_SERVICE(chat_room->chat_room_account)\n");
+ return;
+ }
+ if (RUN_SERVICE(chat_room->chat_room_account)->join_chat_room == NULL) {
+
eb_debug(DBG_CORE,"!RUN_SERVICE(chat_room->chat_room_account)->join_chat_room\n");
+ return;
+ }
+
RUN_SERVICE(chat_room->chat_room_account)->join_chat_room(chat_room);
}
Index: chat_room.h
===================================================================
RCS file: /cvsroot/ayttm/ayttm/src/chat_room.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- chat_room.h 8 Jan 2003 01:55:19 -0000 1.2
+++ chat_room.h 8 Jan 2003 20:50:09 -0000 1.3
@@ -41,6 +41,8 @@
GtkWidget * conversation;
GtkWidget * entry;
GtkWidget * online; // CList of online folks
+ GtkWidget *smiley_button;
+ GtkWidget *smiley_window;
GList * fellows; //who is in the chat room
eb_local_account * chat_room_account; //who are we talking as?
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Ayttm-commits] CVS: ayttm/src chat_room.c,1.6,1.7 chat_room.h,1.2,1.3,
Colin Leroy <address@hidden> <=
- Prev by Date:
[Ayttm-commits] CVS: ayttm ChangeLog,1.56,1.57 configure.in,1.56,1.57
- Next by Date:
[Ayttm-commits] CVS: ayttm/modules/yahoo2 yahoo.c,1.3,1.4
- Previous by thread:
[Ayttm-commits] CVS: ayttm ChangeLog,1.56,1.57 configure.in,1.56,1.57
- Next by thread:
[Ayttm-commits] CVS: ayttm/modules/yahoo2 yahoo.c,1.3,1.4
- Index(es):